home *** CD-ROM | disk | FTP | other *** search
/ By Popular Request 2.0 / By Popular Request 2.0 (Arsenal Computer).ISO / amiga_1 / antcclvr.lha / AntiCicloVir_V2.4 / AntiCicloVir.s < prev    next >
Text File  |  1992-09-02  |  120KB  |  5,948 lines

  1. ; program       : AntiCicloVir
  2. ; programsort   : Viruskiller
  3. ; versionsnr.   : 2.4
  4. ; genesis date  : 31.10.1994
  5. ; author        : Mathias Gutt
  6. ;                 Kantstr. 16
  7. ;          21335 Lⁿneburg
  8. ;          Tel.: 04131/49624
  9. ;          Germany
  10. ; This program shows a simple form of virus-hunting
  11. ; and so I hope, some novices can find some useful
  12. ; routines in AntiCicloVir.
  13. ; AntiCicloVir is completely Public Domain and that
  14. ; means, you can do everything with the program
  15. ; and this source, but read the docs !!!
  16. ; You can put out some routines from AntiCicloVir, to
  17. ; include them into your own program, or you may use
  18. ; AntiCicloVir as base for your own viruskiller, but
  19. ; it is not allowed, to use the same name !!!
  20. ; AntiCicloVir shows the system-vectors to you,
  21. ; looks for known viruses in memory, in the bootsectors
  22. ; of every disk from every drive and checks directories
  23. ; and files for viruses ...
  24. ; I used the masterseka v1.51 to write this one.
  25. ; Please excuse my bad anglian !!!
  26. ; I know, that this source is not the best one, but
  27. ; if you have some questions, please write me !
  28.  
  29.  
  30. Execbase = 4
  31. MEMF_PUBLIC = 1
  32. MEMF_CHIP = 2
  33. MEMF_FAST = 4
  34. MEMF_CLEAR = 65536
  35. MEMF_LARGEST = 131072
  36.  
  37. Addport = -354
  38. AllocCInfo = -30
  39. AllocMem = -198
  40. AllocSignal = -330
  41. AutoRequest = -348
  42. CheckBoot = -$2A
  43. Close = -36
  44. CloseDevice = -450
  45. CloseLibrary = -414
  46. CloseWindow = -72
  47. CopyMem = -624
  48. CurrentDir = -126
  49. Delay = -$00C6
  50. DeleteFile = -$0048
  51. DetermineFile = -42
  52. DisplayAlert = -90
  53. DoIORoutine = -456
  54. Examine = -102
  55. ExNext = -108
  56. FreeCInfo = -36
  57. FreeMem = -210
  58. FreeSignal = -336
  59. FindName = -276
  60. FindTask = -294
  61. GetMsg = -372
  62. Lock = -84
  63. Open = -$001E
  64. OpenDeviceRoutine = -444
  65. OldOpenLibrary = -408
  66. OpenWindow = -204
  67. Read = -42
  68. ReadBBBF = -$1E
  69. RemPort = -360
  70. Rename = -78
  71. rlAllocTableMem = -$1E
  72. rlFreeTableMem = -$24
  73. rlGetFileVName = -$2A
  74. rlGetMemVName = -$3C
  75. rlKillMemV = -$42
  76. SetProtection = -186
  77. SetWindowTitles = -276
  78. UnLock = -90
  79. UnPack = -48
  80. WaitIO = -474
  81. WaitPort = -384
  82. Write = -$0030
  83.  
  84. CloseLib: MACRO            ;Macro
  85. move.l ExecBase,a6        ;get ExecBase
  86. move.l ?1(pc),a1        ;get LibBase
  87. jsr CloseLibrary(a6)        ;call subroutine
  88. ENDM                ;end of macro
  89.  
  90. Requester: MACRO        ;Macro
  91. lea AutoRequestTextPtr(pc),a0    ;get Ptr of AutoRequestText
  92. move.l ?1,(a0)            ;insert address of Outputtext in AutoRequestText
  93. lea GadgetTextPtr(pc),a0    ;get Ptr of GadgetText
  94. move.l ?2,(a0)            ;insert address of OutputText in GadgetText
  95. lea GadgetText2Ptr(pc),a0    ;get Ptr of next GadgetText
  96. move.l ?3,(a0)            ;insert address of OutputText in next Gadget
  97. move.l #0,a0            
  98. lea AutoRequestText(pc),a1    ;get RequestText-structure    
  99. lea GadgetText(pc),a2        ;get GadgetText-structure
  100. lea GadgetText2(pc),a3        ;get GadgetText2-structure
  101. moveq #0,d0            ;no IDCMP-Flag
  102. moveq #0,d1            ;no IDMCP-Flag
  103. move.l ?4,d2            ;get Width for Request
  104. move.l ?5,d3            ;get Height for Request
  105. move.l Intuibase(pc),a6        ;get Intuibase
  106. jsr AutoRequest(a6)        ;call subroutine
  107. ENDM                ;end of macro
  108.  
  109. Requesterold: MACRO        ;Macro
  110. move.l #0,a0
  111. lea ?1,a1            ;get RequestText-structure
  112. lea ?2,a2            ;get GadgetText-structure
  113. lea ?3,a3            ;get Gadget2Text-structure
  114. moveq #0,d0            ;no IDCMP-Flag
  115. moveq #0,d1            ;no IDCMP-Flag
  116. move.l ?4,d2            ;get Width for Requester
  117. move.l ?5,d3            ;get Heigth for Requester
  118. move.l Intuibase(pc),a6        ;get Intuibase
  119. jsr AutoRequest(a6)        ;call subroutine
  120. ENDM                ;end of macro
  121.  
  122.  
  123. move.l a0,ParamAddress        ;get ParamAddress
  124. move.l d0,ParamLength        ;get ParamLength
  125.  
  126. ;WBStartup-Head
  127. ;This routine tries to find out, if AntiCicloVir was
  128. ;called from the Workbench or from the Shell.
  129.  
  130. move.l ExecBase,a6        ;get ExecBase
  131. suba.l a1,a1            ;get TaskName (=0)
  132. jsr FindTask(a6)        ;call subroutine
  133. move.l d0,a4            ;write task-address to a4
  134. tst.l 172(a4)            ;CLI or WB ?
  135. bne clicall            ;was called from shell
  136.  
  137. lea 92(a4),a0            ;Ptr of MsgPort
  138. jsr WaitPort(a6)        ;call subroutine
  139. lea 92(a4),a0            ;Ptr of MsgPort
  140. jsr GetMsg(a6)            ;call subroutine
  141. bra WBcall            ;was called from WB
  142.  
  143. clicall:
  144. bsr CheckFirstMark        ;branch to subroutine
  145. move.l Paramaddress(pc),a0    ;get Paramaddress
  146.  
  147. cmp.b #"-",(a0)+        ;look for option-line
  148. bne ScanFiles            ;if <>0 branch to scanfiles
  149.  
  150. Option:
  151. cmp.b #"c",(a0)            ;look for option c
  152. beq fastcheckset        ;if yes, branch to fastcheckset
  153. cmp.b #"m",(a0)            ;look for option m
  154. beq Clicall2            ;if yes, branch to Clicall2
  155.  
  156. fastcheckset:
  157. move.b #$FF,fastcheck        ;set fastcheck-flag
  158.  
  159. Clicall2:
  160. move.b #$FF,StartupFlag        ;set StartupFlag
  161.  
  162. WBcall:
  163. ; This one is a little color-cycling, to greet the
  164. ; user !
  165.  
  166. Colors:
  167. add.l #$00070007,d0
  168. cmp.l #$00FF00FF,d0
  169. bge AntiCicloVir
  170. move.w #1,d1
  171.  
  172. Colorcycling:
  173. move.b $dff005,d2
  174.  
  175. ColorcyclingLoop:
  176. move.l d0,$dff180
  177. move.l d0,$dff184
  178. cmp.b $dff005,d2
  179.  
  180. beq.s ColorcyclingLoop
  181. dbra d1,ColorCycling
  182. bra Colors
  183.  
  184. AntiCicloVir:
  185. bsr OpenDos            ;open DosLib
  186. cmp.l #0,d0            ;error ?
  187. beq Ende            ;Yes, end it !
  188. move.l d0,Dosbase        ;No, get DosBase
  189. bsr OpenIntui            ;open IntuiLib
  190. cmp.l #0,d0            ;error ?
  191. beq CloseDos            ;Yes, close DosLib
  192. move.l d0,Intuibase        ;No, get Intuibase
  193. bsr OpenBBBFLib            ;open BBBFLib
  194. move.l d0,BBBFBase        ;get BBBFBase
  195. bsr BBBFLibErrorCheck        ;branch to BBBFLibErrorCheck
  196. bsr OpenBrainFile        ;open BrainFile
  197. bsr BrainFileErrorCheck        ;branch to BrainFileErrorCheck
  198. bsr OpenRLLib            ;open RLLib
  199. move.l d0,RLBase        ;get RLBase
  200. bsr RLLibErrorCheck        ;branch to RLLibErrorCheck
  201. clr.l d0            ;clear d0
  202. bsr AllocTableMem        ;allocate memory for table
  203. move.l d0,RLStructPtr        ;get RLStructPtr
  204. cmp.b #$FF,StartupFlag        ;was Startup-flag set ?
  205. bne WBStart            ;No, branch to WBStart
  206. bsr OpenWin            ;open DOS-window
  207. cmp.l #0,d0            ;error ?
  208. beq CloseDos            ;Yes, close DosLib
  209. move.l d0,Handle        ;No, get Handle
  210.  
  211. WBStart:
  212. bsr vectors_table        ;show system-vectors
  213. cmp.b #$FF,StartupFlag        ;was Startup-flag set ?
  214. bne WBStart2            ;No, branch to WBStart2
  215. bsr Print            ;print my message
  216.  
  217. WBStart2:
  218. bsr CheckMem            ;check memory for viruses
  219. cmp.b #$FF,StartupFlag        ;was Startup-flag set ?
  220. bne WBStart3            ;No, branch to WBStart3
  221. bsr CloseWin            ;close DOS-Window
  222.  
  223. WBStart3:
  224. bsr FreeTableMem        ;free memory for table
  225. bsr CloseRLLib            ;close RLLib
  226. bsr CloseBBBFLib        ;close BBBFLib
  227. bsr CloseIntui            ;close IntuiLib
  228. bra CloseDos            ;close DosLib
  229.  
  230. ScanFiles:
  231. bsr OpenDos            ;open DosLib
  232. cmp.l #0,d0            ;error ?
  233. beq Ende            ;Yes, and good bye !
  234. move.l d0,Dosbase        ;No, get DosBase
  235. bsr OpenIntui            ;open IntuiLib
  236. cmp.l #0,d0            ;error ?
  237. beq CloseDos            ;Yes, end it !
  238. move.l d0,Intuibase        ;No, get Intuibase
  239. bsr OpenRLLib            ;open RLLib
  240. move.l d0,RLBase        ;get RLBase
  241. bsr RLLibErrorCheck        ;branch to RLLibErrorCheck
  242. clr.l d0            ;clear d0
  243. bsr AllocTableMem        ;allocate memory for table
  244. move.l d0,RLStructPtr        ;get RLStructPtr
  245. bsr OpenUnPackLib        ;open UnPackLib
  246. move.l d0,UPBase        ;get UPBase
  247. bsr UnPackLibErrorCheck        ;branch to UnPackLibErrorCheck
  248. clr.l d0            ;clear d0
  249. bsr DoAllocCInfo        ;allocate memory for CInfo-structure
  250. move.l d0,UPInfo        ;get UPInfo
  251. bsr OpenWin            ;open DOS-window
  252. cmp.l #0,d0            ;error ?
  253. beq CloseDos            ;Yes, close DosLib
  254. move.l d0,Handle        ;No, get Handle
  255. bsr Print            ;print my message
  256. bsr PrintScan            ;print scan-path
  257. move.b #$FF,fastcheck        ;set fastcheck-flag
  258. bsr CheckMem            ;check memory for viruses
  259. move.l ExecBase,a6        ;get ExecBase
  260. move.l #MEMF_CHIP!MEMF_CLEAR!MEMF_LARGEST,d1
  261. move.l #260,d0            ;allocate 260 Bytes
  262. jsr AllocMem(a6)        ;connected CHIP-RAM !
  263. tst.l d0            ;error ?
  264. beq notenough            ;Yes, print notenough
  265. move.l d0,FileInfoBlockMem    ;No, get MemPtr
  266. move.l ExecBase,a6        ;get ExecBase
  267. move.l #MEMF_CHIP!MEMF_LARGEST,d1;allocate $5000 bytes
  268. move.l #$5000,d0        ;connected CHIP-RAM !
  269. jsr AllocMem(a6)        ;call subroutine
  270. tst.l d0            ;error ?
  271. beq notenough            ;Yes, print notenough
  272. move.l d0,FileMem        ;No, get MemPtr
  273. bsr GetLock            ;branch to GetLock
  274. cmp.l #0,d0            ;error ?
  275. beq ScanFilesEnd        ;Yes, end all !
  276. move.l d0,LockHandle        ;No, get Lock
  277. bsr ExamineIt            ;examine file
  278. cmp.l #0,d0            ;error ?
  279. beq FileTestEnd            ;Yes, branch to FileTestEnd
  280. cmp.b #$FE,FileFlag        ;check all ?
  281. beq DirectoryTest        ;Yes, checking directories
  282. move.l FileInfoBlockMem(pc),a0    ;No, get FileInfoBlock 
  283. cmp.l #0,4(a0)            ;directory ?
  284. ble FileTest            ;No, branch to filetest
  285.  
  286. DirectoryTest:            ;Yes !
  287. bsr MakeCurrentDir        ;branch to MakeCurrentDir
  288. move.l d0,OldLock        ;get old Lock
  289. cmp.b #$FE,FileFlag        ;check all ?
  290. beq SeekII2            ;Yes, branch to SeekII2 !
  291. bra Seek2            ;branch to Seek2
  292.  
  293. Seek:
  294. bsr CheckFile            ;branch to CheckFile
  295. Seek2:            
  296. bsr ExNextIt            ;get next FIB-datas
  297. cmp.l #0,d0            ;more datas ?
  298. bne Seek            ;Yes, branch to Seek
  299. bsr UnLockIt            ;No, unlock it
  300. bsr OldCurrentDir        ;branch to OldCurrentDir
  301. bra ScanFilesEnd        ;end scanfiles
  302.  
  303. SeekII:
  304. bsr CheckAllDirectories        ;branch to CheckAllDirectories
  305. move.l FileInfoBlockMem(pc),a0    ;get FIB-structure
  306. cmp.l #0,4(a0)            ;Directory ?
  307. ble SeekII2            ;No, branch to SeekII2
  308. move.l LockHandle(pc),-(sp)    ;save old lock
  309. move.l FileInfoBlockMem(pc),-(sp);save old FIB-structure-address
  310. add.l #1,subdirgen        ;count up !
  311.  
  312. move.l Dosbase(pc),a6        ;get DosBase
  313. move.l FileInfoBlockmem(pc),a0    ;get FIB-structure
  314. add.l #8,a0            ;get filename
  315. move.l a0,d1            ;write address of filename to d1
  316. move.l #72,d2            ;use the read mode
  317. jsr Lock(a6)            ;call subroutine
  318.  
  319. move.l d0,Lockhandle        ;get new Lockhandle
  320.  
  321. bsr MakeCurrentDir        ;branch to MakeCurrentDir
  322.  
  323. move.l ExecBase,a6        ;get ExecBase
  324. move.l #MEMF_CHIP!MEMF_CLEAR!MEMF_LARGEST,d1
  325. move.l #260,d0            ;allocate 260 bytes
  326. jsr AllocMem(a6)        ;call subroutine
  327. move.l d0,FileInfoBlockMem    ;get MemPtr
  328.  
  329. bsr ExamineIt            ;branch to ExamineIt
  330.  
  331. SeekII2:
  332. bsr ExNextIt            ;get next FIB-datas
  333. cmp.l #0,d0            ;more datas ?
  334. bne SeekII            ;Yes, branch to SeekII
  335. cmp.l #0,subdirgen        ;any more subdirectories ?
  336. beq SeekII3            ;No, branch to SeekII3
  337. sub.l #1,subdirgen        ;count down !
  338.  
  339. move.l ExecBase,a6        ;get ExecBase
  340. move.l FileInfoBlockMem(pc),a1    ;get FileInfoBlockMemPtr
  341. move.l #260,d0            ;deallocate 260 bytes
  342. jsr FreeMem(a6)            ;call subroutine
  343. move.l (sp)+,FileInfoBlockMem    ;get back address of old FIB-structure
  344.  
  345. bsr UnLockIt            ;branch to UnLockIt
  346. move.l (sp)+,Lockhandle        ;get back address of old lockhandle
  347.  
  348. bsr MakeCurrentDir        ;branch to MakeCurrentDir
  349. bra SeekII2            ;continue the Seek-loop !
  350.  
  351. SeekII3:
  352. bsr UnLockIt            ;No, unlock it
  353. bsr OldCurrentDir        ;branch to OldCurrentDir
  354. bra ScanFilesEnd        ;end scanfiles
  355.  
  356. FileTest:
  357. lea Directory(pc),a0        ;get Directory
  358. move.l ParamLength(pc),d0    ;get ParamLength
  359.  
  360. PathLoop:
  361. cmp.b #":",(a0)            ;look for :
  362. beq GetDirectoryname        ;Yes, get directoryname
  363. cmp.b #"/",(a0)+        ;look for /
  364. beq GetDirectoryname        ;Yes, get directoryname
  365. sub.l #1,d0            ;count down
  366. cmp.l #0,d0            ;zero ?
  367. bne PathLoop            ;No, continue loop !
  368. bra FileTest2            ;Yes, branch to FileTest2
  369.  
  370. GetDirectoryName:
  371. move.b #$FF,FileFlag        ;set FileFlag
  372. lea Directory(pc),a0        ;get Directory
  373. move.l ParamLength(pc),d0    ;get ParamLength
  374. add.l d0,a0            ;add lentgh to address of Directory
  375.  
  376. DirectoryNameLoop:
  377. cmp.b #":",(a0)            ;look for :
  378. beq MakeCurrentPath        ;Yes, branch to MakeCurrentPath
  379. cmp.b #"/",(a0)            ;look for /
  380. beq MakeCurrentPath        ;Yes, branch to MakeCurrentPath
  381. sub.l #1,a0            ;count down
  382. sub.l #1,d0            ;count down
  383. cmp.l #0,d0            ;zero ?
  384. bne DirectoryNameLoop        ;No, continue loop !
  385. bra FileTest2            ;Yes, branch to FileTest2
  386.  
  387. MakeCurrentPath:
  388. move.b #00,1(a0)        ;clear last byte
  389. bsr GetLock            ;get lock
  390. cmp.l #0,d0            ;error ?
  391. beq FileTestEnd            ;Yes, end FileTest
  392. move.l d0,FileLockHandle    ;No, get Lock
  393. bsr MakeCurrentFileDir        ;branch to MakeCurrentFileDir
  394. move.l d0,OldLock        ;get old Lock
  395.  
  396. FileTest2:
  397. bsr CheckFile            ;branch to CheckFile
  398. cmp.b #$FF,FileFlag        ;was FileFlag set ?
  399. bne FileTestEnd            ;No, end FileTest
  400.  
  401. bsr UnLockFilePath        ;Yes, unlock filepath
  402. bsr OldCurrentDir        ;branch to OldCurrentDir
  403.  
  404. FileTestEnd:
  405. bsr UnLockIt            ;unlock file
  406. bra ScanFilesEnd        ;end scanfiles
  407.  
  408. CheckFirstMark:
  409. move.l Paramaddress(pc),a0    ;get Paramaddress
  410. cmp.b #$22,(a0)            ;inverted commas ?
  411. beq GetPara2            ;Yes, branch to GetPara2
  412. bra GetPara            ;No, branch to GetPara
  413.  
  414. GetPara:
  415. move.l Paramaddress(pc),a0    ;get Paramaddress
  416. lea Directory(pc),a1        ;get Directory-address
  417.  
  418. ParaLoop:
  419. move.b (a0)+,(a1)+        ;copy Parameter to Directory
  420. cmp.b #" ",(a0)         ;Spacecode ?
  421. beq ParaLoopEnde        ;Yes, end the loop!
  422. cmp.b #$0A,(a0)            ;Returncode
  423. beq ParaLoopEndeII        ;Yes, end the loop !
  424. bra ParaLoop            ;No, continue loop !
  425.  
  426. ParaLoopEnde:
  427. add.l #1,a0            ;count up !
  428. move.b #0,(a1)            ;remove spacecode !
  429. bsr GetOption            ;branch to subroutine
  430. rts                ;return from subroutine
  431.  
  432. ParaLoopEndeII:
  433. move.b #0,(a1)            ;remove returncode !
  434. rts                ;return from subroutine
  435.  
  436. GetPara2:
  437. move.l Paramaddress(pc),a0    ;get Paramaddress
  438. add.l #1,a0            ;count up !
  439. lea Directory(pc),a1        ;get Directory-address
  440.  
  441. Para2Loop:
  442. move.b (a0)+,(a1)+        ;copy Parameter to Directory
  443. cmp.b #$22,(a0)         ;inverted commas ?
  444. bne Para2Loop            ;No, continue the loop !
  445.  
  446. Para2LoopEnde:
  447. add.l #1,a0            ;count up !
  448. bsr GetOption            ;branch to subroutine
  449. rts                ;return from subroutine
  450.  
  451. GetOption:
  452. lea All(pc),a1          ;get option-def-address
  453. cmp.b #"-",(a0)            ;hyphen ?
  454. bne GetOptionLoopEnd        ;No, end the GetOptionLoop !
  455.  
  456. clr.l d0            ;clear d0 !
  457. move.l #5, d1            ;set count in d1 !
  458.  
  459. GetOptionLoop:
  460. sub.l #1,d1            ;count down !
  461. cmp.l #0,d1            ;zero ?
  462. beq GetOptionLoopSet        ;Yes, end GetOptionLoop !
  463. move.b (a1)+,d0            ;get one byte from option-def in d0
  464. cmp.b (a0)+,d0          ;option-def = option ??
  465. bne GetOptionLoopEnd        ;No, end the loop !
  466. bra GetOptionLoop        ;Continue the loop !
  467.  
  468. GetOptionLoopSet:
  469. move.b #$FE,FileFlag        ;set FileFlag !
  470. GetOptionLoopEnd:
  471. rts                ;return from subroutine
  472.  
  473. OpenDos:
  474. move.l ExecBase,a6        ;get ExecBase
  475. lea Dosname(pc),a1        ;get LibName
  476. move.l #0,d0            ;get version
  477. jsr OldOpenLibrary(a6)        ;call subroutine
  478. rts                ;return from subroutine
  479.  
  480. OpenIntui:
  481. move.l ExecBase,a6        ;get ExecBase
  482. lea Intuiname(pc),a1        ;get LibName
  483. move.l #0,d0            ;get version
  484. jsr OldOpenLibrary(a6)        ;call subroutine
  485. rts                ;return from subroutine
  486.  
  487. OpenBBBFLib:
  488. move.l ExecBase,a6        ;get ExecBase
  489. lea BBBFName(pc),a1        ;get LibName
  490. move.l #0,d0            ;get version
  491. jsr OldOpenLibrary(a6)        ;call subroutine
  492. rts                ;return from subroutine
  493.  
  494. BBBFLibErrorCheck:
  495. cmp.l #0,BBBFBase        ;error ?
  496. beq BBBFLibErrDisplay        ;Yes, display it !
  497. rts                ;return from subroutine
  498.  
  499. OpenBrainFile:
  500. cmp.l #0,BBBFBase        ;BBBFBase available ?
  501. beq OpenBrainFileEnd        ;No, branch to OpenBrainFileEnd
  502. move.l BBBFBase(pc),a6        ;get BBBFBase
  503. lea BrainFileName(pc),a0    ;get BrainFileName
  504. clr.l d0            ;clear d0
  505. jsr ReadBBBF(a6)        ;call subroutine
  506. OpenBrainFileEnd:
  507. rts                ;return from subroutine
  508.  
  509. OpenRLLib:
  510. move.l ExecBase,a6        ;get ExecBase
  511. lea RLName(pc),a1        ;get LibName
  512. move.l #32,d0            ;get version
  513. jsr OldOpenLibrary(a6)        ;call subroutine
  514. rts                ;return from subroutine
  515.  
  516. RLLibErrorCheck:
  517. cmp.l #0,RLBase            ;error ?
  518. beq RLLibErrDisplay        ;Yes, display it !
  519. rts                ;return from subroutine
  520.  
  521. OpenUnPackLib:
  522. move.l ExecBase,a6        ;get ExecBase
  523. lea UnPackName(pc),a1        ;get LibName
  524. move.l #0,d0            ;get version
  525. jsr OldOpenLibrary(a6)        ;call subroutine
  526. rts                ;return from subroutine
  527.  
  528. UnPackLibErrorCheck:
  529. cmp.l #0,UPBase            ;error ?
  530. beq UnPackErrDisplay        ;Yes, display it !
  531. rts                 ;return from subroutine
  532.  
  533. OpenWin:
  534. move.l Dosbase(pc),a6        ;get DosBase
  535. move.l #DOSWin,d1        ;get Windowdef-address
  536. move.l #1006,d2            ;use the new mode
  537. jsr Open(a6)            ;call subroutine
  538. rts                ;return from subroutine
  539.  
  540. Print:
  541. move.l #Text,d2            ;get Text-Startaddress
  542. move.l #Textende,d3        ;get Text-Endaddress
  543. bsr PrintDOSText        ;branch to subroutine
  544. rts                ;return from subroutine
  545.  
  546. PrintScan:
  547. move.l #ScanText,d2        ;get ScanText-Startaddress
  548. move.l #ScanTextend,d3        ;get ScanText-Endaddress
  549. bsr PrintDOSText        ;branch to subroutine
  550. rts                ;return from subroutine
  551.  
  552. notenough:
  553. move.l #notenoughText,d2    ;get Text-Startaddress
  554. move.l #notenoughTextende,d3    ;get Text-Endaddress
  555. bsr PrintDOSText        ;branch to subroutine
  556. rts                ;return from subroutine
  557.  
  558. AllocTableMem:
  559. cmp.l #0,RLBase            ;RLBase available ?
  560. beq AllocTableMemEnd        ;No, branch to AllocTableMemEnd
  561. move.l RLBase(pc),a6        ;get RLBase
  562. jsr rlAllocTableMem(a6)        ;call subroutine
  563. AllocTableMemEnd:
  564. rts                ;return from subroutine
  565.  
  566. DoAllocCInfo:
  567. cmp.l #0,UPBase            ;UPBase available ?
  568. beq DoAllocCInfoEnd        ;No, branch to DoAllocCInfoEnd
  569. move.l UPBase(pc),a6        ;get UPBase
  570. jsr AllocCInfo(a6)        ;call subroutine
  571. DoAllocCInfoEnd:
  572. rts                ;return from subroutine
  573.  
  574. FreeTableMem:
  575. cmp.l #0,RLStructPtr        ;RLStruct available ?
  576. beq FreeTableMemEnd        ;No, branch to FreeTableMemEnd
  577. move.l RLBase(pc),a6        ;get RLBase
  578. move.l RLStructPtr(pc),a0       ;get RLStructPtr
  579. jsr rlFreeTableMem(a6)        ;call subroutine
  580. FreeTableMemEnd:
  581. rts                ;return from subroutine
  582.  
  583. DoFreeCInfo:
  584. cmp.l #0,UPInfo            ;UPInfo available ?
  585. beq DoFreeCInfoEnd        ;No, branch to DoFreeCInfoEnd
  586. move.l UPBase(pc),a6        ;get UPBase
  587. move.l UPInfo(pc),a0        ;get UPInfo
  588. jsr FreeCInfo(a6)        ;call subroutine
  589. DoFreeCInfoEnd:
  590. rts                ;return from subroutine
  591.  
  592. NoMemAlert:
  593. move.l Intuibase(pc),a6        ;get Intuibase
  594. move.l #40,d1            ;get Alert-Heigth
  595. lea string(pc),a0        ;get string-address
  596. jsr DisplayAlert(a6)        ;call subroutine
  597. rts                ;return from subroutine
  598.  
  599. BBBFLibErrDisplay:
  600. move.l Intuibase(pc),a6        ;get Intuibase
  601. move.l #40,d1            ;get Alert-Heigth
  602. lea BBBFstring(pc),a0        ;get string-address
  603. jsr DisplayAlert(a6)        ;call subroutine
  604. rts                ;return from subroutine
  605.  
  606. RLLibErrDisplay:
  607. move.l Intuibase(pc),a6        ;get Intuibase
  608. move.l #40,d1            ;get Alert-Heigth
  609. lea RemoveLinkstring(pc),a0    ;get string-address
  610. jsr DisplayAlert(a6)        ;call subroutine
  611. rts                ;return from subroutine
  612.  
  613. UnPackErrDisplay:
  614. move.l Intuibase(pc),a6        ;get Intuibase
  615. move.l #40,d1            ;get Alert-Heigth
  616. lea UnPackstring(pc),a0        ;get sting-address
  617. jsr DisplayAlert(a6)        ;call subroutine
  618. rts                ;return from subroutine
  619.  
  620. BrainFileErrorCheck:
  621. cmp.l #0,d0            ;error ?
  622. blt DisplayBrainFileError    ;Yes, branch to DisplayBrainFileError
  623. rts                ;return from subroutine
  624.  
  625. DisplayBrainFileError:
  626. lea BBBFErrList(pc),a0        ;get BBBFErrList-address
  627. move.l #-1,d1            ;get counter
  628.  
  629. DisplayBrainFileErrorLoop:
  630. cmp.l d1,d0            ;d1 = d0 ?
  631. beq DisplayBrainFileErrorAlert  ;display error !
  632. sub.l #1,d1            ;count down !
  633. cmp.l #0,(a0)+            ;count up !
  634. cmp.l #-5,d1            ;more than four loop ?
  635. bne DisplayBrainFileErrorLoop    ;continue the loop !
  636. rts                ;return from subroutine
  637.  
  638. DisplayBrainFileErrorAlert:
  639. move.l Intuibase(pc),a6        ;get Intuibase
  640. move.l #40,d1            ;get Alert-Height
  641. move.l (a0),a0            ;get string-address
  642. jsr DisplayAlert(a6)        ;call subroutine
  643. rts                ;return from subroutine
  644.  
  645. UPErr:
  646. move.l UPInfo(pc),a0        ;get UPInfo
  647. move.l 24(a0),d0        ;get ErrorNum
  648. move.l #1,d1            ;get counter
  649. lea UnPackErrlist(pc),a0    ;get UnPackErrlist-startaddress 
  650.  
  651. UPErrLoop:
  652. cmp.l d0,d1            ;d0 = d1 ?
  653. beq DisplayUPErr        ;Yes, DisplayUPErr !
  654. add.l #1,d1            ;count up !
  655. cmp.l #0,(a0)+            ;count up !
  656. cmp.l #17,d1            ;more than 16 loops ?
  657. bne UPErrLoop            ;No, continue the loop !
  658. bra FileVirusCheck        ;branch to subroutine
  659.  
  660.  
  661. DisplayUPErr:
  662. move.l (a0),d0
  663. Requester d0,#ContinueText,#ContinueText,#610,#70
  664. bra FileVirusCheck        ;branch to subroutine
  665.  
  666. CloseWin:
  667. move.l Handle(pc),d1        ;get Handle
  668. move.l Dosbase(pc),a6        ;get DosBase
  669. jsr Close(a6)            ;call subroutine
  670. rts                ;return from subroutine
  671.  
  672. CloseUnPackLib:
  673. cmp.l #0,UPBase            ;UPBase opened ?
  674. beq CloseUnPackLibEnd        ;No, do not close it !
  675. CloseLib UPBase            ;Yes, close it !
  676. CloseUnPackLibEnd:
  677. rts                ;return from subroutine
  678.  
  679. CloseRLLib:
  680. cmp.l #0,RLBase            ;RLBase opened ?
  681. beq CloseRLLibEnd        ;No, do not close it !
  682. CloseLib RLBase            ;Yes, close it !
  683. CloseRLLibEnd:
  684. rts                ;return from subroutine
  685.  
  686. CloseBBBFLib:
  687. cmp.l #0,BBBFBase        ;BBBFBase opened ?
  688. beq CloseBBBFBaseEnd        ;No, do not close it !
  689. CloseLib BBBFBase        ;Yes, close it !
  690. CloseBBBFBaseEnd:
  691. rts                ;return from subroutine
  692.  
  693. CloseIntui:
  694. CloseLib Intuibase        ;close IntuiLib
  695. rts                ;return from subroutine
  696.  
  697. CloseDos:
  698. CloseLib DosBase        ;close DosLib
  699. clr.l d0            ;clear d0
  700.  
  701. Ende:
  702. rts                ;return from subroutine
  703.  
  704. GetLock:
  705. move.l Dosbase(pc),a6        ;get DosBase
  706. move.l #Directory,d1        ;get Directory
  707. move.l #72,d2            ;use the read mode
  708. jsr Lock(a6)            ;call subroutine
  709. rts                ;return from subroutine
  710.  
  711. MakeCurrentDir:
  712. move.l Dosbase(pc),a6        ;get DosBase
  713. move.l LockHandle(pc),d1    ;get Lock
  714. jsr CurrentDir(a6)        ;call subroutine
  715. rts                ;return from subroutine
  716.  
  717. MakeCurrentFileDir:
  718. move.l Dosbase(pc),a6        ;get DosBase
  719. move.l FileLockHandle(pc),d1    ;get Lock
  720. jsr CurrentDir(a6)        ;call subroutine
  721. rts                ;return from subroutine
  722.  
  723. ExamineIt:
  724. move.l Dosbase(pc),a6        ;get DosBase
  725. move.l LockHandle(pc),d1    ;get Lock
  726. move.l FileInfoBlockMem(pc),d2    ;get FileInfoBlock-structure
  727. jsr Examine(a6)            ;call subroutine
  728. rts                ;return from subroutine
  729.  
  730. ExNextIt:
  731. move.l Dosbase(pc),a6        ;get DosBase
  732. move.l LockHandle(pc),d1    ;get Lock
  733. move.l FileInfoBlockMem(pc),d2     ;get FileInfoBlock-structure
  734. jsr ExNext(a6)            ;call subroutine
  735. rts                ;return from subroutine
  736.  
  737. UnLockIt:
  738. move.l Dosbase(pc),a6        ;get DosBase
  739. move.l LockHandle(pc),d1    ;get Lock
  740. jsr UnLock(a6)            ;call subroutine
  741. rts                ;return from subroutine
  742.  
  743. UnLockFilePath:
  744. move.l Dosbase(pc),a6        ;get DosBase
  745. move.l FileLockHandle(pc),d1    ;get FileInfoBlock-structure
  746. jsr UnLock(a6)            ;call subroutine
  747. rts                ;return from subroutine
  748.  
  749. OldCurrentDir:
  750. move.l Dosbase(pc),a6        ;get DosBase
  751. move.l OldLock(pc),d1        ;get old lock
  752. jsr CurrentDir(a6)        ;call subroutine
  753. rts                ;return from subroutine
  754.  
  755. ScanFilesEnd:
  756. move.l ExecBase,a6        ;get ExecBase
  757. move.l #260,d0            ;deallocate 260 Bytes
  758. move.l FileInfoBlockMem(pc),a1    ;memory from the
  759. jsr FreeMem(a6)            ;FileInfoBlock-structure
  760.  
  761. move.l ExecBase,a6        ;get ExecBase
  762. move.l #$5000,d0        ;deallocate $5000 Bytes
  763. move.l FileMem(pc),a1        ;memory from the
  764. jsr Freemem(a6)            ;filebuffer
  765.  
  766. bsr CloseWin            ;close DOS-window
  767. bsr FreeTableMem        ;free Table-Memory
  768. bsr DoFreeCInfo            ;free CInfo-Memory
  769. bsr CloseUnPackLib        ;close UnPackLib
  770. bsr CloseRLLib            ;close RLLib
  771. bsr CloseIntui            ;close IntuiLib
  772. bra CloseDos            ;close DosLib
  773.  
  774. even
  775. string:
  776. dc.b 0,200,10,`      NOT ENOUGH MEMORY !`,0
  777. dc.b 0,0,0,0
  778.  
  779. even
  780. BBBFstring:
  781. dc.b 0,200,10,`  Can not open Bootblock.library !`,0
  782. dc.b 0,0,0,0
  783.  
  784. even
  785. BBBFErrList:
  786. dc.l BBBFErr1String
  787. dc.l BBBFErr2String
  788. dc.l BBBFErr3String
  789. dc.l BBBFErr4String
  790.  
  791. even
  792. BBBFErr1string:
  793. dc.b 0,200,10,`  Can not open brainfile !!!`,0
  794. dc.b 0,0,0,0
  795.  
  796. even
  797. BBBFErr2string:
  798. dc.b 0,200,10,`  Brainfile corrupt error !`,0
  799. dc.b 0,0,0,0
  800.  
  801. even
  802. BBBFErr3string:
  803. dc.b 0,200,10,`  Brainfile already loaded !`,0
  804. dc.b 0,0,0,0
  805.  
  806. even
  807. BBBFErr4string:
  808. dc.b 0,200,10,`  Not enough memory for brainfile !`,0
  809. dc.b 0,0,0,0
  810.  
  811. even
  812. RemoveLinkstring:
  813. dc.b 0,200,10,`  Can not open removelink.library !`,0
  814. dc.b 0,0,0,0
  815.  
  816. even
  817. Unpackstring:
  818. dc.b 0,200,10,`  Can not open unpack.library !`,0
  819. dc.b 0,0,0,0
  820.  
  821. even
  822. Dosname:
  823. dc.b `dos.library`,0
  824.  
  825. even
  826. Intuiname:
  827. dc.b `intuition.library`,0
  828.  
  829. even
  830. BBBFName:
  831. dc.b `Bootblock.library`,0
  832.  
  833. even
  834. RLName:
  835. dc.b `removelink.library`,0
  836.  
  837. even
  838. UnpackName:
  839. dc.b `unpack.library`,0
  840.  
  841. even
  842. BrainFileName:
  843. dc.b `:L/Bootblock.brainfile`,0
  844.  
  845. even
  846. Dosbase:
  847. dc.l 0
  848.  
  849. Intuibase:
  850. dc.l 0
  851.  
  852. BBBFBase:
  853. dc.l 0
  854.  
  855. RLBase:
  856. dc.l 0
  857.  
  858. RLStructPtr:
  859. dc.l 0
  860.  
  861. UPBase:
  862. dc.l 0
  863.  
  864. UPInfo:
  865. dc.l 0
  866.  
  867. Handle:
  868. dc.l 0
  869.  
  870. DateiHandle:
  871. dc.l 0
  872.  
  873. LockHandle:
  874. dc.l 0
  875.  
  876. FileLockHandle:
  877. dc.l 0
  878.  
  879. OldLock:
  880. dc.l 0
  881.  
  882. FileInfoBlockMem:
  883. dc.l 0
  884.  
  885. FIBBackup:
  886. dc.l 0
  887.  
  888. FileMem:
  889. dc.l 0
  890.  
  891. HunkPos:
  892. dc.l 0
  893.  
  894. Paramaddress:
  895. dc.l 0
  896.  
  897. ParamLength:
  898. dc.l 0
  899.  
  900. subdirgen:
  901. dc.l 0
  902.  
  903. ScanText:
  904. dc.b $9b,`3;31m`
  905. dc.b `... scanning `
  906. even
  907. Directory:
  908. blk.b 500,0
  909. dc.b ` for link-, file- & diskvalidator-viruses, trojans an
  910. d bombs:`,10,10,10
  911. dc.b $9b,`0;31m`
  912. ScanTextend:
  913.  
  914. even
  915. Space:
  916. blk.b 80,0
  917.  
  918. Sign:
  919. dc.b 0
  920.  
  921. fastcheck:
  922. dc.b 0
  923.  
  924. StartupFlag:
  925. dc.b 0
  926.  
  927. FileFlag:
  928. dc.b 0
  929.  
  930. even
  931. All:
  932. dc.b `-all`,10
  933.  
  934. even
  935. DOSWin:
  936. dc.b `*`,0
  937.  
  938. even
  939. Text:
  940. dc.b ` `,10
  941. dc.b $9b,`1;31m`
  942. dc.b `               AntiCicloVir `
  943. dc.b $9b,`3;31m`
  944. dc.b `- Virus-Statikum Version 2.4`,10
  945. dc.b `       (C) 1992-1994 by Matthias Gutt, Kantstr.16 , 21335 Lⁿneburg , Germany`,10
  946. dc.b ` `,10
  947. dc.b $9b,`0;33m`
  948. dc.b `KNOWN VIRUSES COUNT:`,10
  949. dc.b `Bootblock-Viruses     : 188 + Bootblock.library`,10
  950. dc.b `Linkviruses           :  15 + removelink.library`,10
  951. dc.b `Fileviruses           :  28 + removelink.library`,10
  952. dc.b `Disk-Validator-Viruses:   7 + removelink.library`,10
  953. dc.b `Trojans               :  11 + removelink.library`,10
  954. dc.b `Bombs                 :  17 + removelink.library`,10
  955. dc.b `---------------------------`,10
  956. dc.b `ENEMIES (TOTAL)       : 266 + SHI known viruses`,10
  957.  
  958. dc.b `Usage: AntiCicloVir [pathname [-all]]/[-c]/[-m]`,10
  959. dc.b `OPTIONS TABLE:`,10
  960. dc.b `-c = fast memorycheck`,10
  961. dc.b `-m = memorycheck + installing background task for looking`,10
  962. dc.b `     on every inserted disk for Bootblock- + Disk-Validator-viruses`,10
  963. dc.b ` `,10
  964. dc.b $9b,`0;31m`
  965. Textende:
  966.  
  967. even
  968. notenoughText:
  969. dc.b ` `,10
  970. dc.b `                            Not enough memory !`,10
  971.  
  972. notenoughTextende:
  973.  
  974. even
  975. CheckAllDirectories:
  976. cmp.l #0,subdirgen        ;parent dir ?
  977. beq CheckAllDirectories2    ;Yes, branch to CheckAllDirectories2
  978.  
  979. move.l subdirgen(pc),d0        ;get subdirgen
  980. mulu #4,d0            ;multiplicate subdirgen
  981.  
  982. move.l Dosbase(pc),a6        ;get Dosbase
  983. move.l Handle(pc),d1        ;get Handle
  984.  
  985. lea Space(pc),a0        ;get Space-address
  986. move.l a0,d2            ;copy a0 to d2
  987.  
  988. Spaceloop:
  989. move.b #" ",(a0)+        ;write spaces !
  990. sub.l #1,d0            ;count down !
  991. cmp.l #0,d0            ;zero ?
  992. bne Spaceloop            ;No, continue the loop !
  993.  
  994. sub.l d2,a0            ;subtract startaddress of Space from its endaddress
  995. move.l a0,d3            ;get size
  996. jsr Write(a6)            ;call subroutine
  997.  
  998. CheckAllDirectories2:
  999. move.l Dosbase(pc),a6        ;get Dosbase
  1000. move.l Handle(pc),d1        ;get Handle
  1001. move.l FileInfoBlockMem(pc),d2    ;get FIB-structure
  1002. add.l #8,d2            ;get filename
  1003. move.l d2,a0            ;copy d2 to a0
  1004.  
  1005. TextLoop2:
  1006. cmp.b #$00,(a0)+        ;zerobyte ?
  1007. bne TextLoop2            ;No, continue the loop !
  1008.  
  1009. sub.l d2,a0            ;Yes, subtract end from startaddress
  1010. move.l a0,d3            ;get Textlength
  1011. jsr Write(a6)            ;call subroutine
  1012. bra Loadfile            ;branch to Loadfile !
  1013.  
  1014. CheckFile:
  1015. move.l #30,d0            ;get counter
  1016. lea FileNameText(pc),a0        ;get FileNameText-address
  1017.  
  1018. ClearFileNameTextLoop:
  1019. move.b #$20,(a0)+        ;clear all bytes with spaces
  1020. sub.l #1,d0            ;count down
  1021. cmp.l #0,d0            ;zero ?
  1022. bne ClearFileNameTextLoop    ;No, continue loop !
  1023.  
  1024. move.l FileInfoBlockMem(pc),a0    ;get FIB-structure
  1025. add.l #8,a0            ;get filename
  1026. lea FileNameText(pc),a1        ;get address of FileNamebuffer
  1027. move.l #30,d0            ;create counter
  1028.  
  1029. NameLoop:
  1030. move.b (a0)+,(a1)+        ;write filename to filenamebuffer
  1031. cmp.b #00,(a0)            ;look for zero
  1032. beq NameLoopEnd            ;Yes, end the loop !
  1033. sub.l #1,d0            ;count down
  1034. cmp.l #0,d0            ;zero ?
  1035. bne NameLoop            ;No, continue the loop !
  1036. NameLoopEnd:
  1037. move.l #FileNameText,d2        ;get FileNamebuffer-Startaddress
  1038. move.l #FileNameTextende,d3    ;get FileNamebuffer-Endaddress
  1039. bsr PrintDOSText        ;branch to subroutine
  1040.  
  1041. move.l FileInfoBlockMem(pc),a0    ;get FIB-structure
  1042. cmp.l #0,4(a0)            ;Directory ?
  1043. ble Sizehex            ;No, get filesize
  1044.  
  1045. move.l #DirText,d2        ;get DirText-Startaddress
  1046. move.l #DirTextende,d3        ;get DirText-Endaddress
  1047. bsr PrintDOSText        ;branch to subroutine
  1048. bra Protection            ;branch to Protection
  1049.  
  1050. Sizehex:
  1051. move.l FileInfoBlockMem(pc),a6    ;get FIB-structure
  1052. move.l 124(a6),d2        ;get Size-address
  1053. lea Length(pc),a0        ;get Sizebuffer-address
  1054. bsr hex                ;hex it !
  1055.  
  1056. move.l #SizeText,d2        ;get SizeText-Startaddress
  1057. move.l #SizeTextende,d3        ;get SizeText-Endaddress
  1058. bsr PrintDOSText        ;branch to subroutine
  1059.  
  1060. Protection:
  1061. move.l PBits(pc),ProtectText    ;write Protectionbits to the buffer
  1062.  
  1063. lea ProtectText(pc),a0        ;get ProtectText-Startaddress
  1064. move.l FileInfoBlockMem(pc),a6    ;get FIB-structure
  1065. move.l #03,d0            ;create counter
  1066.  
  1067. ProtectionLoop:
  1068. btst d0,116(a6)            ;is Protectionbit set ?
  1069. bne SetLine            ;Yes, write line !
  1070. ProtectionLoop2:
  1071. cmp.b #0,(a0)+            ;count up
  1072. sub.l #1,d0            ;count down
  1073. cmp.l #0,d0            ;lower than zero ?
  1074. bge ProtectionLoop        ;No, continue the loop !
  1075. bra ShowPBits            ;Yes, show Protectionbits
  1076.  
  1077. SetLine:
  1078. move.b #`-`,(a0)        ;write line
  1079. bra ProtectionLoop2        ;branch back to loop !
  1080.  
  1081. ShowPBits:
  1082. move.l Dosbase(pc),a6        ;get DosBase
  1083. move.l Handle(pc),d1        ;get Handle
  1084. move.l #ProtectText,d2        ;get ProtectText-Startaddress
  1085. move.l #8,d3            ;get Textlength
  1086. jsr Write(a6)            ;call subroutine
  1087.  
  1088. move.l Dosbase(pc),a6        ;get DosBase
  1089. move.l Handle(pc),d1        ;get Handle
  1090. move.l FileInfoBlockMem(pc),d2    ;get FIB-structure
  1091. add.l #144,d2            ;get CommentText-address
  1092. move.l d2,a0            ;copy d2 to a0
  1093. TextLoop:
  1094. cmp.b #$00,(a0)+        ;zerobyte ?
  1095. bne TextLoop            ;No, continue the loop !
  1096. sub.l d2,a0            ;Yes, subtract end- from startaddress
  1097. move.l a0,d3            ;get Textlength
  1098. jsr Write(a6)            ;call subroutine
  1099.  
  1100. Loadfile:
  1101. move.l Dosbase(pc),a6        ;get DosBase
  1102. move.l FileInfoBlockMem(pc),d1    ;get FIB-structure
  1103. add.l #8,d1            ;get filename
  1104. move.l #1005,d2            ;use the old mode
  1105. jsr Open(a6)            ;call subroutine
  1106. cmp.l #0,d0            ;error ?
  1107. beq OK2                ;Yes, end CheckFile
  1108. move.l d0,Dateihandle        ;No, get Dateihandle
  1109.  
  1110. move.l Dosbase(pc),a6        ;get DosBase
  1111. move.l Dateihandle(pc),d1    ;get Dateihandle
  1112. move.l FileMem(pc),d2        ;get Filebuffer
  1113. move.l #$5000,d3        ;read $5000 bytes
  1114. jsr Read(a6)            ;call subroutine
  1115.  
  1116. cmp.l #0,UPBase            ;UPBase available ?
  1117. beq FileVirusCheck        ;No, branch to FileVirusCheck
  1118. move.l UPBase(pc),a6        ;get UPBase
  1119. cmp.l #0,UPInfo            ;UPInfo available ?
  1120. beq FileVirusCheck        ;No, branch to FileVirusCheck
  1121. move.l UPInfo(pc),a0        ;get UPInfo
  1122. move.l FileInfoBlockMem(pc),a1    ;get FIB-structure
  1123. add.l #8,a1            ;get filename
  1124. jsr DetermineFile(a6)        ;call subroutine
  1125. cmp.l #0,d0            ;error ?
  1126. beq UPErr            ;Yes, branch to UPErr 
  1127.  
  1128. move.l UPInfo(pc),a0        ;get UPInfo
  1129. cmp.l #0,12(a0)            ;cruncher ?
  1130. beq FileVirusCheck        ;No, branch to FileVirusCheck
  1131.  
  1132. lea CruncherName(pc),a1        ;get CruncherName-Startaddress
  1133. move.l #40,d0            ;get counter
  1134.  
  1135. ClearCruncherNameLoop:
  1136. move.b #00,(a1)+        ;clear the buffer !
  1137. sub.l #1,d0            ;count down !
  1138. cmp.l #0,d0            ;zero ?
  1139. bne ClearCruncherNameLoop    ;No, continue the loop !
  1140.  
  1141. move.l 12(a0),a0        ;get CruncherName-Startaddress
  1142.                 ;from UPInfo
  1143. lea CruncherName(pc),a1        ;get CruncherName-Bufferaddress
  1144.  
  1145. CruncherNameLoop:
  1146. move.b (a0)+,(a1)+        ;write CruncherName to buffer
  1147. cmp.b #00,(a0)            ;any more byte ?
  1148. bne CruncherNameLoop        ;Yes, continue the loop !
  1149.  
  1150. move.l #CruncherText,d2        ;get CruncherText-Startaddress
  1151. move.l #CruncherTextende,d3    ;get CruncherText-Endaddress
  1152. bsr PrintDOSText        ;branch to subroutine
  1153.  
  1154. move.l UPBase(pc),a6        ;get UPBase
  1155. move.l UPInfo(pc),a0        ;get UPInfo
  1156. lea 8(a0),a3            ;get UPJump-address
  1157. lea UPJump(pc),a4        ;get own jump-address
  1158. move.l a4,(a3)            ;insert own jump-address in UPJump
  1159. jsr UnPack(a6)            ;call subroutine
  1160. cmp.l #0,d0            ;error ?
  1161. beq UPErr            ;Yes, branch to UPErr
  1162. rts                ;return from subroutine
  1163.  
  1164. UPJump:
  1165. bsr CopyCrunched        ;branch to virusscan
  1166. rts                ;return to unpack
  1167.  
  1168. CopyCrunched:
  1169. move.l ExecBase,a6        ;get ExecBase
  1170. move.l UPInfo(pc),a0          ;get UPInfo
  1171. move.l 16(a0),a0        ;get Decrunch-address from UPInfo
  1172. move.l FileMem(pc),a1        ;get FileMem-address
  1173. move.l #$5000,d0        ;get size
  1174. jsr CopyMem(a6)            ;call subroutine
  1175.  
  1176. FileVirusCheck:
  1177. move.l #53,d0            ;get counter
  1178. lea FileVirusOffsetlist(pc),a0    ;get offsetlist
  1179. lea Filevirustestbyteslist(pc),a1;get testbyteslist
  1180. lea FilevirusNameList(pc),a3    ;get FileVirusNamelist
  1181.  
  1182. CompareFileLoop:
  1183. move.l (a0)+,d1            ;get offset
  1184. add.l FileMem(pc),d1        ;add filebuffer-address
  1185. move.l d1,a2            ;write d1 to a2
  1186. move.l (a2),d1            ;get one longword from filebuffer
  1187. cmp.l (a1)+,d1            ;is this longword = testbytes ?
  1188. beq Filevirus            ;Yes, branch to Filevirus
  1189. cmp.l #0,(a3)+            ;count FilevirusNamelist
  1190. sub.l #1,d0            ;count down
  1191. cmp.l #0,d0            ;zero ?
  1192. bne CompareFileLoop        ;No, continue the loop !
  1193.  
  1194. SpecialVirus:
  1195. move.l #4,d0            ;get counter
  1196. lea SpecialVirusOffsetList(pc),a0; get offsetlist
  1197. lea SpecialVirusTestbytesList(pc),a1;get testbyteslist
  1198. lea SpecialVirusNameList(pc),a3    ;get SpecialVirusNameList
  1199. lea SpecialVirusInvisibleNameList(pc),a5
  1200.  
  1201. CompareSpecialVirusLoop:
  1202. move.l (a0)+,d1            ;get offset
  1203. add.l FileMem(pc),d1        ;add filebufferaddress to offset
  1204. move.l d1,a2            ;write d1 to a2
  1205. move.l (a2),d1            ;get one longword from filebuffer 
  1206. cmp.l (a1)+,d1            ;is this longword = testbytes ?
  1207. beq KillSpecialVirus        ;Yes, branch to KillSpecialVirus
  1208. cmp.l #0,(a3)+            ;count SpecialVirusNameList
  1209. cmp.l #0,(a5)+            ;count SpecialVirusInvisibleNameList
  1210. sub.l #1,d0            ;count down
  1211. cmp.l #0,d0            ;zero ?
  1212. bne CompareSpecialVirusLoop    ;No, continue the loop !
  1213.  
  1214. CheckFile2:
  1215. move.l FileMem(pc),a0        ;get filebuffer
  1216.  
  1217. cmp.l #$60040000,$24(a0)    ;RoLe-Virus ?
  1218. beq ReturnFile            ;Yes, branch to ReturnFile
  1219.  
  1220. cmp.l #"-lh5",$2(a0)        ;lha-archive ?
  1221. beq LHA5            ;Yes, branch to LHA5 !
  1222.  
  1223. cmp.l #"PP20",(a0)        ;PP-Data ?
  1224. beq PPData            ;Yes, branch to PPData
  1225.  
  1226. move.l FileInfoBlockMem(pc),d0    ;get FIB-structure
  1227. add.l #8,d0            ;get filename
  1228. move.l d0,a0            ;copy d0 to a0
  1229. InvisibleLoop:
  1230. cmp.b #$A0,(a0)+        ;Invisible sign in filename ?
  1231. beq InvisibleFile        ;Yes, branch to InvisibleFile
  1232. cmp.b #$00,(a0)            ;any more byte ?
  1233. bne InvisibleLoop        ;Yes, continue the loop !
  1234.  
  1235. move.l FileMem(pc),a0        ;get filebuffer
  1236. cmp.l #$000003F3,(a0)        ;executable ?
  1237. bne OK                ;No, end CheckFile
  1238.  
  1239. LinkLoop:
  1240. cmp.l #$000003E9,(a0)+        ;looking for first hunk
  1241. bne LinkLoop            ;No, continue the loop !
  1242.  
  1243. move.l a0,HunkPos        ;get Hunk-Startposition
  1244. move.l #12,d0            ;get counter
  1245. lea LinkvirusOffsetList(pc),a0    ;get offsetlist
  1246. lea LinkvirusTestbytesList(pc),a1;get testbyteslist
  1247. lea LinkvirusNameList(pc),a3    ;get LinkvirusNameList
  1248.  
  1249. CompareLinkLoop:
  1250. move.l (a0)+,d1            ;get offset
  1251. add.l HunkPos(pc),d1        ;add Hunkposition to offset
  1252. move.l d1,a2            ;write d1 to a2
  1253. move.l (a2),d1            ;get one longword from hunk
  1254. cmp.l (a1)+,d1            ;is this longword = testbytes ?
  1255. beq Linkvirus            ;Yes, branch to Linkvirus
  1256. cmp.l #0,(a3)+            ;count LinkvirusNameList
  1257. sub.l #1,d0            ;count down
  1258. cmp.l #0,d0            ;zero ?
  1259. bne CompareLinkLoop        ;No, continue the loop !
  1260.  
  1261. CheckFile3:
  1262. move.l HunkPos(pc),a0        ;get fisrt Hunkposition
  1263.  
  1264. cmp.l #$024D4558,$6CC(a0)    ;HQCCruncher ?
  1265. beq HQCFile            ;Yes, branch to HQCFile
  1266.  
  1267. cmp.l #"powe",$60(a0)        ;PowerPacker ?
  1268. beq PowerPackerFile        ;Yes, branch to PowerPackerFile
  1269.  
  1270. cmp.l #"xplo",$30(a0)        ;Imploder
  1271. beq ImploderFile        ;Yes, branch to ImploderFile
  1272.  
  1273. cmp.l #0,RLBase            ;RLBase available ?
  1274. beq HunkCheck            ;No, branch to HunkCheck
  1275. move.l RLBase(pc),a6        ;get RLBase
  1276. cmp.l #0,RLStructPtr        ;RLStruct available ?
  1277. beq HunkCheck            ;No, branch to HunkCheck
  1278. move.l RLStructPtr(pc),a0    ;get RLStructPtr
  1279. lea 26(a0),a3            ;get BufferPtr
  1280. move.l FileMem(pc),(a3)        ;get FileMem-address
  1281. jsr rlGetFileVName(a6)        ;call subroutine
  1282.  
  1283. move.l RLStructPtr(pc),a0    ;get RLStructPtr
  1284. cmp.l #0,(a0)            ;filevirus ?
  1285. beq HunkCheck            ;No, branch to HunkCheck
  1286.  
  1287. move.l (a0),a0            ;get address of FileInfection-structure
  1288. lea 4(a0),a3            ;get virusname-address
  1289. lea 20(a0),a5            ;get origin filename-address
  1290. cmp.w #0,16(a0)            ;linkvirus ?
  1291. beq Linkvirus            ;Yes, branch to Linkvirus
  1292. cmp.w #1,16(a0)            ;filevirus ?
  1293. beq Filevirus            ;Yes, branch to Filevirus
  1294. cmp.w #2,16(a0)            ;SpecialVirus ?
  1295. beq KillSpecialVirus        ;Yes, branch to KillSpecialVirus
  1296.  
  1297. HunkCheck:
  1298. move.l FileMem(pc),a0        ;get filebuffer
  1299. cmp.l #$000003F3,(a0)        ;executable ?
  1300. beq EXECUTABLEFile        ;Yes, branch to ExecutableFile
  1301.  
  1302.  
  1303. OK:
  1304. move.l Dosbase(pc),a6        ;get DosBase
  1305. move.l Dateihandle(pc),d1    ;get Dateihandle
  1306. jsr Close(a6)            ;call subroutine
  1307.  
  1308. OK2:
  1309. move.l #FileText2,d2        ;get FileText-Startaddress
  1310. move.l #FileText2ende,d3    ;get FileText-Endaddress
  1311. bsr PrintDOSText        ;branch to subroutine
  1312. rts                ;return from subroutine
  1313.  
  1314. PrintDOSText:
  1315. move.l Dosbase(pc),a6        ;get DosBase
  1316. move.l Handle(pc),d1        ;get Handle
  1317. sub.l d2,d3            ;get Textlength
  1318. jsr Write(a6)            ;call subroutine
  1319. rts                ;return from subroutine
  1320.  
  1321. FileVirusNameLoop:
  1322. move.l #40,d0            ;get counter
  1323. lea FileVirusName(pc),a0    ;get FileVirusNamebuffer
  1324.  
  1325. ClearFileVirusNameLoop:
  1326. move.b #$00,(a0)+        ;clear all bytes
  1327. sub.l #1,d0            ;count down
  1328. cmp.l #0,d0            ;zero ?
  1329. bne ClearFileVirusNameLoop    ;No, continue the Loop !
  1330.  
  1331. move.l #FileText,d2        ;get FileText-Startaddress
  1332. move.l #FileTextende,d3        ;get FileText-Endaddress
  1333. lea FileVirusName(pc),a0    ;get FileVirusNamebuffer
  1334.  
  1335. FileVirusNameLoopLoop:
  1336. move.b (a1)+,(a0)+        ;write Virusname to Filevirusbuffer
  1337. cmp.b #$00,(a1)            ;zero ?
  1338. bne FileVirusNameLoopLoop    ;No, continue the loop !
  1339. bsr PrintDOSText        ;branch to subroutine
  1340. rts                ;return from subroutine
  1341.  
  1342. FileVirus:
  1343. clr.l (a2)            ;clear testbytes in filebuffer
  1344. move.l (a3),a1            ;get VirusText-Address
  1345. bsr FileVirusNameLoop        ;branch to FileVirusNameLoop
  1346.  
  1347. move.l FileInfoBlockMem(pc),d4    ;get FIB-structure
  1348. add.l #8,d4            ;get filename
  1349. bsr KillFileVirus        ;branch to subroutine
  1350. bra OK2                ;end CheckFile
  1351.  
  1352. ReturnFile:
  1353. clr.l $24(a0)            ;clear testbytes in filebuffer
  1354. lea ReturnoftheLamerExterminatorText(pc),a1
  1355. bsr FileVirusNameLoop        ;branch to FileVirusNameLoop
  1356. move.l FileInfoBlockMem(pc),d4    ;get FIB-structure
  1357. add.l #8,d4            ;get filename
  1358. bsr KillFileVirus3        ;branch to subroutine
  1359. bra OK2                ;end CheckFile
  1360.  
  1361. HQCFile:
  1362. clr.l $6CC(a0)            ;clear testbytes in filebuffer
  1363. move.l #HQCCruncherText,d2    ;get HQCCruncherText-StartAddress
  1364. move.l #HQCCruncherTextende,d3    ;get HQCCruncherText-Endaddress
  1365. bsr PrintDOSText        ;branch to subroutine
  1366. bra OK                ;end CheckFile
  1367.  
  1368. PowerPackerFile:
  1369. clr.l $60(a0)            ;clear testbytes in filebuffer
  1370. move.l #PowerPackerText,d2    ;get PowerPackerText-Startaddress
  1371. move.l #PowerPackerTextende,d3    ;get PowerPackerText-Endaddress
  1372. bsr PrintDOSText        ;branch to subroutine
  1373. bra OK                ;end CheckFile
  1374.  
  1375. ImploderFile:
  1376. clr.l $30(a0)            ;clear the testbytes in filebuffer
  1377. move.l #ImploderText,d2        ;get ImploderText-Startaddress
  1378. move.l #ImploderTextende,d3    ;get ImploderText-Endaddress
  1379. bsr PrintDOSText        ;branch to subroutine
  1380. bra OK                ;end CheckFile
  1381.  
  1382. LHA5:
  1383. clr.l $2(a0)            ;clear the testbytes
  1384. move.l #LHA5Text,d2        ;get LHA5Text-Startaddress
  1385. move.l #LHA5Textende,d3        ;get LHA5Text-Endaddress
  1386. bsr PrintDOSText        ;branch to subroutine
  1387. bra OK                ;end CheckFile
  1388.  
  1389. PPData:
  1390. clr.l (a0)            ;clear the testbytes
  1391. move.l #PPDataText,d2        ;get PPDataText-Startaddress
  1392. move.l #PPDataTextende,d3    ;get PPDataText-Endaddress
  1393. bsr PrintDOSText        ;branch to subroutine
  1394. bra OK                ;end CheckFile
  1395.  
  1396. EXECUTABLEFile:
  1397. move.l #ExecutableText,d2    ;get ExecutableText-Startaddress
  1398. move.l #ExecutableTextende,d3    ;get ExecutableText-Endaddress
  1399. bsr PrintDOSText        ;branch to subroutine
  1400. bra OK                ;end CheckFile
  1401.  
  1402. InvisibleFile:
  1403. move.l #InvisibleFileText,d2    ;get InvisibleText-Startaddress
  1404. move.l #InvisibleFileTextende,d3;get InvisibleText-Endaddress
  1405. bsr PrintDOSText        ;branch to subroutine
  1406. move.l FileInfoBlockMem(pc),d4    ;get FIB-structure
  1407. add.l #8,d4            ;get filename
  1408. bsr KillFileVirus4        ;branch to subroutine
  1409. bra OK2                ;end CheckFile
  1410.  
  1411. LinkvirusNameLoop:
  1412. move.l #40,d0            ;get counter
  1413. lea LinkvirusName(pc),a0    ;get LinkvirusNamebuffer-address
  1414.  
  1415. ClearLinkvirusNameLoop:
  1416. move.b #$00,(a0)+        ;clear the buffer
  1417. sub.l #1,d0            ;count down
  1418. cmp.l #0,d0            ;zero ?
  1419. bne ClearLinkvirusNameLoop    ;No, continue the loop !
  1420.  
  1421. move.l #LinkText,d2        ;get LinkText-Startaddress
  1422. move.l #LinkTextende,d3        ;get LinkText-Endaddress
  1423. lea LinkVirusName(pc),a0    ;get Linkvirusnamebuffer-address
  1424.  
  1425. LinkVirusNameLoopLoop:
  1426. move.b (a1)+,(a0)+        ;write Virusname to LinkvirusNamebuffer
  1427. cmp.b #$00,(a1)            ;zero ?
  1428. bne LinkVirusNameLoopLoop    ;No, continue the loop !
  1429. bsr PrintDOSText        ;branch to subroutine
  1430. rts                ;return from subroutine
  1431.  
  1432. Linkvirus:
  1433. clr.l (a2)            ;clear testbytes from filebuffer
  1434. move.l (a3),a1            ;get VirusText-Address
  1435. bsr LinkvirusNameLoop        ;branch to LinkvirusLoop
  1436. bra OK2                ;end CheckFile
  1437.  
  1438. CloseVirus:
  1439. move.l Dosbase(pc),a6        ;get DosBase
  1440. move.l Dateihandle(pc),d1    ;get Dateihandle
  1441. jsr Close(a6)            ;call subroutine
  1442. rts                ;return from subroutine
  1443.  
  1444. KillFileVirus:
  1445. bsr CloseVirus            ;branch to subroutine
  1446. KillFileVirus2:            
  1447. Requester #KillFileTexten,#Yes,#No,#310,#80
  1448. cmp.l #0,d0            ;Zero ?
  1449. beq KillFileVirusNext        ;Yes, do not kill the filevirus
  1450.  
  1451. DeleteVirus:
  1452. move.l Dosbase(pc),a6        ;get DosBase
  1453. move.l d4,d1            ;get filename
  1454. move.l #%00000000,d2        ;unprotect
  1455. jsr SetProtection(a6)        ;call subroutine
  1456.  
  1457. move.l Dosbase(pc),a6        ;get DosBase
  1458. move.l d4,d1            ;get filename
  1459. jsr DeleteFile(a6)        ;call subroutine
  1460. KillFileVirusNext:
  1461. rts                ;return from subroutine
  1462.  
  1463. RenameVirus:
  1464. move.l Dosbase(pc),a6        ;get DosBase
  1465. move.l d4,d2            ;get new filename
  1466. jsr Rename(a6)            ;call subroutine
  1467. rts                ;return from subroutine
  1468.  
  1469. KillSpecialVirus:
  1470. clr.l (a2)            ;clear testbytes in filebuffer
  1471. lea SpecialVirusName(pc),a0    ;get SpecialVirusNamebuffer-address
  1472. move.l #40,d0            ;get counter
  1473.  
  1474. ClearSpecialVirusNameLoop:
  1475. move.b #00,(a0)+        ;clear the buffer
  1476. sub.l #1,d0            ;count down
  1477. cmp.l #0,d0            ;Zero ?
  1478. bne ClearSpecialVirusNameLoop    ;No, continue the loop !
  1479.  
  1480. lea SpecialVirusName(pc),a0    ;get SpecialVirusNamebuffer-address
  1481. move.l (a3),a1            ;get Virusname-Address
  1482.  
  1483. SpecialVirusNameLoop:
  1484. move.b (a1)+,(a0)+        ;write VirusName to SpecialVirusNamebuffer
  1485. cmp.b #0,(a1)            ;Zero ?
  1486. bne SpecialVirusNameLoop    ;No, continue the loop !
  1487.  
  1488. bsr CloseVirus            ;branch to subroutine
  1489. Requester #KillSpecialVirusText,#Yes,#No,#610,#70
  1490. cmp.l #0,d0            ;Zero ?
  1491. beq KillSpecialVirusNext    ;Yes, do not kill the filevirus
  1492. move.l FileInfoBlockMem(pc),d4    ;get FIB-structure
  1493. add.l #8,d4            ;get filename
  1494. bsr DeleteVirus            ;branch to subroutine
  1495. KillSpecialVirusNext:    
  1496. Requester #SpecialVirusOrigText,#Yes,#No,#610,#70
  1497. cmp.l #0,d0            ;Zero ?
  1498. beq KillSpecialVirusNextNext    ;Yes, do not rename the original
  1499. move.l (a5),d1            ;No, get original-filename-address
  1500. move.l FileInfoBlockMem(pc),d4    ;get FIB-structure
  1501. add.l #8,d4            ;get filename
  1502. bsr RenameVirus            ;branch to subroutine
  1503. KillSpecialVirusNextNext:
  1504. bra OK2                ;end CheckFile
  1505.  
  1506. KillFileVirus3:
  1507. bsr CloseVirus            ;branch to subroutine
  1508. Requester #RenameFileTexten,#Yes,#No,#400,#70
  1509. cmp.l #0,d0            ;Zero ?
  1510. beq KillFileVirus3Next        ;Yes, do not rename the file
  1511.  
  1512. move.l Dosbase(pc),a6        ;get DosBase
  1513. move.l d4,d1            ;get old filename
  1514. move.l #RETURN,d2        ;get new filename
  1515. jsr Rename(a6)            ;call subroutine
  1516. KillFileVirus3Next:
  1517. rts                ;return from subroutine
  1518.  
  1519. KillFileVirus4:
  1520. bsr CloseVirus            ;branch to subroutine
  1521. Requester #RenameInvisibleFileText,#Yes,#No,#350,#70
  1522. cmp.l #0,d0            ;Zero ?
  1523. beq KillFileVirus4Next
  1524.  
  1525. move.l Dosbase(pc),a6        ;get DosBase
  1526. move.l d4,d1            ;get old filename
  1527. move.l #CRITICAL,d2        ;get new filename
  1528. jsr Rename(a6)            ;call subroutine
  1529. KillFileVirus4Next:
  1530. rts                ;return from subroutine
  1531.  
  1532. even
  1533. AutoRequestText:
  1534. dc.b 0,2
  1535. dc.b 0
  1536. even
  1537. dc.w 20,20
  1538. dc.l 0
  1539. AutoRequestTextPtr:
  1540. dc.l 0
  1541. dc.l 0
  1542.  
  1543. even
  1544. KillFileTexten:
  1545. dc.b `Shall I delete this File ?`,0
  1546.  
  1547. even
  1548. KillSpecialVirusText:
  1549. dc.b `Shall I delete the filevirus `
  1550. SpecialVirusName: blk.b 40,0
  1551.  
  1552. even
  1553. SpecialVirusOrigText:
  1554. dc.b `Shall I rename the original file ?`,0
  1555.  
  1556. even
  1557. RenameFileTexten:
  1558. dc.b `Shall I rename the Disk-Validator ?`,0
  1559.  
  1560. even
  1561. RenameInvisibleFileText:
  1562. dc.b `Shall I rename this file ?`,0
  1563.  
  1564. even
  1565. GadgetText:
  1566. dc.b 0,2
  1567. dc.b 0
  1568. even
  1569. dc.w 4,4
  1570. dc.l 0
  1571. GadgetTextPtr:
  1572. dc.l 0
  1573. dc.l 0
  1574.  
  1575. even
  1576. GadgetText2:
  1577. dc.b 0,2
  1578. dc.b 0
  1579. even
  1580. dc.w 4,4
  1581. dc.l 0
  1582. GadgetText2Ptr:
  1583. dc.l 0
  1584. dc.l 0
  1585.  
  1586. even
  1587. Yes:
  1588. dc.b `Yes !`,0
  1589.  
  1590. even
  1591. No:
  1592. dc.b `No !`,0
  1593.  
  1594. even
  1595. ContinueText:
  1596. dc.b ` OK `,0
  1597.  
  1598. even
  1599. ContinueText2:
  1600. dc.b 0,2
  1601. dc.b 0
  1602. even
  1603. dc.w 4,4
  1604. dc.l 0
  1605. dc.l ContinueText
  1606. dc.l 0
  1607. dc.l 0
  1608.  
  1609. even
  1610. UnPackErrList:
  1611. dc.l OpenErr
  1612. dc.l ReadWriteErr
  1613. dc.l MemoryErr
  1614. dc.l DetermineErr
  1615. dc.l PasswordErr
  1616. dc.l HunkErr
  1617. dc.l ExternErr
  1618. dc.l CorruptErr
  1619. dc.l DeviceErr
  1620. dc.l DevOpenErr
  1621. dc.l CRCErr
  1622. dc.l CheckSumErr
  1623. dc.l OldErr
  1624. dc.l DevErrErr
  1625. dc.l ProtectErr
  1626. dc.l OutputErr
  1627.  
  1628. even
  1629. OpenErr:
  1630. dc.b `Can not open file !`,0
  1631.  
  1632. even
  1633. ReadWriteErr:
  1634. dc.b `Read/Write Error !`,0
  1635.  
  1636. even
  1637. MemoryErr:
  1638. dc.b `not enough memory !`,0
  1639.  
  1640. even
  1641. DetermineErr:
  1642. dc.b `Can not determine file !`,0
  1643.  
  1644. even
  1645. PassWordErr:
  1646. dc.b `Illegal Password !`,0
  1647.  
  1648. even
  1649. HunkErr:
  1650. dc.b `Hunk-Error !`,0
  1651.  
  1652. even
  1653. ExternErr:
  1654. dc.b `Extern File Error !`,0
  1655.  
  1656. even
  1657. CorruptErr:
  1658. dc.b `Crunched file is corrupt !`,0
  1659.  
  1660. even
  1661. DeviceErr:
  1662. dc.b `Illegal Device !`,0
  1663.  
  1664. even
  1665. DevOpenErr:
  1666. dc.b `Could not open device or create port !`,0
  1667.  
  1668. even
  1669. CRCErr:
  1670. dc.b `CRC CheckSum Error !`,0
  1671.  
  1672. even
  1673. CheckSumErr:
  1674. dc.b `CheckSum Error !`,0
  1675.  
  1676. even
  1677. OldErr:
  1678. dc.b `Decruncher In Lib. Too Old !`,0
  1679.  
  1680. even
  1681. DevErrErr:
  1682. dc.b `Error from device !`,0
  1683.  
  1684. even
  1685. ProtectErr:
  1686. dc.b `Could not set Protectionbits !`,0
  1687.  
  1688. even
  1689. OutputErr:
  1690. dc.b `Output File Error !`,0
  1691.  
  1692. even
  1693. RETURN:
  1694. dc.b `:L/LAMER-Virus`,0
  1695.  
  1696. even
  1697. CRITICAL:
  1698. dc.b `:CRITICAL-Virus`,0
  1699.  
  1700. even
  1701. SpecialVirusNameList:
  1702. dc.l BGS9Text
  1703. dc.l BGS9IIText
  1704. dc.l TerroristsText
  1705. dc.l NaSTText
  1706.  
  1707. even
  1708. SpecialVirusTestbytesList:
  1709. dc.l `TTV1`
  1710. dc.l `TTV1`
  1711. dc.l `TTV1`
  1712. dc.l `NaST`
  1713.  
  1714. even
  1715. SpecialVirusOffsetlist:
  1716. dc.l $00000A04
  1717. dc.l $00000A04
  1718. dc.l $00000620
  1719. dc.l $0000007A
  1720.  
  1721. even
  1722. SpecialVirusInvisibleNameList:
  1723. dc.l BGS9Invisible
  1724. dc.l BGS9Invisible2
  1725. dc.l TerroristsInvisible
  1726. dc.l NaSTInvisible
  1727.  
  1728. even
  1729. BGS9Invisible:
  1730. dc.b `:DEVS/ááá   á   á`,0
  1731.  
  1732. even
  1733. BGS9Invisible2:
  1734. dc.b `:DEVS/áΘá   á   á`,0
  1735.  
  1736. even
  1737. TerroristsInvisible:
  1738. dc.b `:á   á  á áá`,0
  1739.  
  1740. even
  1741. NaSTInvisible:
  1742. dc.b `:c/á á á    á   á`,0
  1743.  
  1744. even
  1745. FileNameText: dc.b `                              `,0
  1746. FileNameTextende:
  1747.  
  1748. even
  1749. SizeText:
  1750. dc.b ` : $`
  1751. Length: dc.b `00000000  `,0
  1752. SizeTextende:
  1753.  
  1754. even
  1755. ExecutableText:
  1756. dc.b `   :EXECUTABLE   `,0
  1757. ExecutableTextende:
  1758.  
  1759. even
  1760. PBits:
  1761. dc.b `rwed`,0
  1762.  
  1763. even
  1764. ProtectText:
  1765. dc.b `       `,0
  1766. ProtectTextende:
  1767.  
  1768. even
  1769. FileText2:
  1770. dc.b `   : OK`,10
  1771. FileText2ende:
  1772.  
  1773. even
  1774. DirText:
  1775. dc.b `      <DIR>   `,0
  1776. DirTextende:
  1777.  
  1778. even
  1779. HQCCruncherText:
  1780. dc.b $9b,`1;33m`
  1781. dc.b `   uses HQC-Cruncher !`,0
  1782. dc.b $9b,`0;31m`
  1783. HQCCruncherTextende:
  1784.  
  1785. even
  1786. PowerPackerText:
  1787. dc.b $9b,`1;33m`
  1788. dc.b `   uses powerpacker-Cruncher !`,0
  1789. dc.b $9b,`0;31m`
  1790. PowerPackerTextende:
  1791.  
  1792. even
  1793. ImploderText:
  1794. dc.b $9b,`1;33m`
  1795. dc.b `   uses implode.library !`,0
  1796. dc.b $9b,`0;31m`
  1797. ImploderTextende:
  1798.  
  1799. even
  1800. LHA5Text:
  1801. dc.b $9b,`1;33m`
  1802. dc.b `   uses lha5-archive !`,0
  1803. dc.b $9b,`0;31m`
  1804. LHA5Textende:
  1805.  
  1806. even
  1807. PPDataText:
  1808. dc.b $9b,`1;33m`
  1809. dc.b `   contains PowerPacker datas !`,0
  1810. dc.b $9b,`0;31m`
  1811. PPDataTextende:
  1812.  
  1813. even
  1814. InvisibleFileText:
  1815. dc.b $9b,`1;33m`
  1816. dc.b `   : ... filename contains invisible signs ! Possibility: FILEVIRUS !!!`,10
  1817. dc.b $9b,`0;31m`
  1818. InvisibleFileTextende:
  1819.  
  1820. even
  1821. CruncherText:
  1822. dc.b $9b,`1;33m`
  1823. dc.b `   :... file is `
  1824. CruncherName: blk.b 40,0
  1825. dc.b ` crunched !!!`,10
  1826. dc.b $9b,`0;31m`
  1827. CruncherTextende:
  1828.  
  1829. even
  1830. FileText:
  1831. dc.b $9b,`1;33m`
  1832. dc.b `   : ... contains `
  1833. FileVirusname: blk.b 40,0
  1834. dc.b ` Filevirus !!!`,10
  1835. dc.b $9b,`0;31m`
  1836. FileTextende:
  1837.  
  1838. even
  1839. LinkText:
  1840. dc.b $9b,`1;33m`
  1841. dc.b `   : ... includes `
  1842. LinkVirusname: blk.b 40,0
  1843. dc.b ` Linkvirus !!!`,10
  1844. dc.b $9b,`0;31m`
  1845. LinkTextende:
  1846.  
  1847. even
  1848. LinkvirusNameList:
  1849. dc.l AntiChristText
  1850. dc.l BestialDevastationText
  1851. dc.l CCCPText
  1852. dc.l GotchaLamerText
  1853. dc.l HochofenText
  1854. dc.l IRQText
  1855. dc.l QRDLText
  1856. dc.l RedOctoberText
  1857. dc.l SmilyCancerText
  1858. dc.l TravelingJackText
  1859. dc.l TravelingJack2Text
  1860. dc.l XenoText
  1861.  
  1862. even
  1863. LinkvirusTestbytesList:
  1864. dc.l $00000250
  1865. dc.l `VAST`
  1866. dc.l `CCCP`
  1867. dc.l `tcha`
  1868. dc.l `hofe`
  1869. dc.l $000003EC
  1870. dc.l $60000342
  1871. dc.l `devi`
  1872. dc.l $60026068
  1873. dc.l $48E7FFFE
  1874. dc.l $48E7FFFE
  1875. dc.l `Nudo`
  1876.  
  1877. even
  1878. LinkvirusOffsetList:
  1879. dc.l $00000788
  1880. dc.l $00000070
  1881. dc.l $0000004C
  1882. dc.l $0000013C
  1883. dc.l $00000B90
  1884. dc.l $000000A4
  1885. dc.l $00000008
  1886. dc.l $00000484
  1887. dc.l $00000004
  1888. dc.l $00000010
  1889. dc.l $00000014
  1890. dc.l $00000414
  1891.  
  1892. even
  1893. FilevirusNameList:
  1894. dc.l AmigaKnightText
  1895. dc.l AntiChristTextText
  1896. dc.l BeethovenText
  1897. dc.l BlueboxText
  1898. dc.l BretHawnesText
  1899. dc.l ColorText
  1900. dc.l CommodoreText
  1901. dc.l CompuPhagozyteText
  1902. dc.l CompuPhagozyte2Text
  1903. dc.l CompuPhagozyteIIText
  1904. dc.l CompuPhagozyteIIIText
  1905. dc.l CompuPhagozyteIIIBCText
  1906. dc.l CompuPhagozyteIVText
  1907. dc.l DStructureText
  1908. dc.l DAGCreatorText
  1909. dc.l DarthVaderText
  1910. dc.l DisasterMasterText
  1911. dc.l DiskKillerText
  1912. dc.l DisktroyerV10Text
  1913. dc.l DisktroyerV20Text
  1914. dc.l DiskVal1234Text
  1915. dc.l DMTrashText
  1916. dc.l DriveInfoText
  1917. dc.l ExcrementCreatorText
  1918. dc.l FreedomText
  1919. dc.l GotchaLamerCreatorText
  1920. dc.l GZUSText
  1921. dc.l INTELText
  1922. dc.l JeffBUTONICV131Text
  1923. dc.l JeffBUTONICV300Text
  1924. dc.l LamerLoadWBText
  1925. dc.l LamerVirusXText
  1926. dc.l Liberatorv121Text
  1927. dc.l Liberatorv30Text
  1928. dc.l Liberatorv501Text
  1929. dc.l ModemCheckerText
  1930. dc.l ModemCheckerloadWBText
  1931. dc.l NANOoldText
  1932. dc.l NanonewText
  1933. dc.l NoGuruv20Text
  1934. dc.l PPBombText
  1935. dc.l RevengeOfTheLAMERExterminatorText
  1936. dc.l SADDAMText
  1937. dc.l SEPULTURAText
  1938. dc.l ShowSysopText
  1939. dc.l SmilyCancerLoadWBText
  1940. dc.l SnoopDosText
  1941. dc.l TelecomText
  1942. dc.l TFCRevengeLoadWBText
  1943. dc.l TimeBombV09Text
  1944. dc.l TravelingJackTextText
  1945. dc.l VirusConstructionSetText
  1946. dc.l xprzspeedV32Text
  1947.  
  1948. even
  1949. FilevirusTestbytesList:
  1950. dc.l `STAR`
  1951. dc.l `ntic`
  1952. dc.l `Beet`
  1953. dc.l `inpu`
  1954. dc.l `BRET`
  1955. dc.l `TURK`
  1956. dc.l `COMM`
  1957. dc.l ` Com`
  1958. dc.l `The `
  1959. dc.l `COMP`
  1960. dc.l `agoz`
  1961. dc.l `gozy`
  1962. dc.l `agoz`
  1963. dc.l `Stru`
  1964. dc.l $00000510
  1965. dc.l `DART`
  1966. dc.l $610002FA
  1967. dc.l `DISK`
  1968. dc.l `iskt`
  1969. dc.l `iskt`
  1970. dc.l `trac`
  1971. dc.l `user`
  1972. dc.l $4EAEFF3A
  1973. dc.l `EXCR`
  1974. dc.l `Free`
  1975. dc.l ` LAM`
  1976. dc.l `-Zus`
  1977. dc.l `oadw`
  1978. dc.l `DASA`
  1979. dc.l $4E714E71
  1980. dc.l `LAME`
  1981. dc.l `MER `
  1982. dc.l `erat`
  1983. dc.l `Libe`
  1984. dc.l `Libe`
  1985. dc.l `HECK`
  1986. dc.l `FUCK`
  1987. dc.l `N A `
  1988. dc.l `Nano`
  1989. dc.l `FNNF`
  1990. dc.l `egam`
  1991. dc.l $60040000
  1992. dc.l `BitM`
  1993. dc.l $4E716100
  1994. dc.l `SPOS`
  1995. dc.l `=WO/`
  1996. dc.l `oopD`
  1997. dc.l `brar`
  1998. dc.l `Fana`
  1999. dc.l `VIRU`
  2000. dc.l ` Jac`
  2001. dc.l `Star`
  2002. dc.l `Spee`
  2003.  
  2004. even
  2005. FilevirusOffsetList:
  2006. dc.l $00000342
  2007. dc.l $00000008
  2008. dc.l $00000044
  2009. dc.l $000001A0
  2010. dc.l $00000028
  2011. dc.l $00000260
  2012. dc.l $0000010E
  2013. dc.l $00000460
  2014. dc.l $00000380
  2015. dc.l $000001B0
  2016. dc.l $0000035C
  2017. dc.l $00000030
  2018. dc.l $00000030
  2019. dc.l $00000168
  2020. dc.l $00000710
  2021. dc.l $00000300
  2022. dc.l $00000028
  2023. dc.l $00000162
  2024. dc.l $00000220
  2025. dc.l $00000224
  2026. dc.l $000006C0
  2027. dc.l $000004C2
  2028. dc.l $0000002C
  2029. dc.l $000000C8
  2030. dc.l $0000054E
  2031. dc.l $000002F0
  2032. dc.l $0000361C
  2033. dc.l $0000027C
  2034. dc.l $00000206
  2035. dc.l $00000088
  2036. dc.l $00000448
  2037. dc.l $00000460
  2038. dc.l $0000129C
  2039. dc.l $00002784
  2040. dc.l $00003E80
  2041. dc.l $000033F0
  2042. dc.l $0000054C
  2043. dc.l $00000492
  2044. dc.l $0000003A
  2045. dc.l $000002F0
  2046. dc.l $00000410
  2047. dc.l $00000020
  2048. dc.l $00000702
  2049. dc.l $00000180
  2050. dc.l $000003D0
  2051. dc.l $00000C00
  2052. dc.l $000006B0
  2053. dc.l $00000290
  2054. dc.l $00000050
  2055. dc.l $000007C0
  2056. dc.l $00000010
  2057. dc.l $00000050
  2058. dc.l $000023F0
  2059.  
  2060. vectors_table:
  2061. bsr OpenTable            ;open table-window
  2062. cmp.l #0,d0            ;error ?
  2063. beq vectorsend            ;Yes, end vectors_table
  2064. move.l d0,vectorshandle        ;No, get handle
  2065. bsr vectors            ;show vectors
  2066. bsr vectorswait            ;delay vectors
  2067. bra vectorsend            ;close vectors_table
  2068.  
  2069. OpenTable:
  2070. move.l Dosbase(pc),a6        ;get ExecBase
  2071. move.l #Table,d1        ;get DOSWindowDef-Address
  2072. move.l #1006,d2            ;use the mode new
  2073. jsr Open(a6)            ;call subroutine
  2074. rts                ;return from subroutine
  2075.  
  2076. vectors:
  2077. move.l #17,d0            ;get counter
  2078. lea ExecVectorsList(pc),a3    ;get vectorslist
  2079. lea ExecVectorsNameList(pc),a4    ;get ExecVectorsNameList
  2080.  
  2081. ExecVectorsLoop:
  2082. move.l (a3)+,d4            ;get offset
  2083. move.l 4,a6            ;get ExecBase
  2084. add.l d4,a6            ;add offset to ExecBase
  2085. move.l (a6),d2            ;write ROM-address to d2
  2086. move.l (a4)+,a0            ;get vectorbuffer
  2087. bsr hex                ;hex !!!
  2088. sub.l #1,d0            ;count down
  2089. cmp.l #0,d0            ;Zero ?
  2090. bne ExecVectorsLoop        ;No, continue the loop !
  2091.  
  2092. bsr FindTrackDisk        ;get TrackDiskBase
  2093. move.l a1,a6            ;write TrackDiskBase to a6
  2094. move.l #2,d0            ;get counter
  2095. lea TrackDiskVectorsList(pc),a3    ;get offsetlist
  2096. lea TrackDiskVectorsNameList(pc),a4;get TrackDiskVectorsNameList
  2097.  
  2098. TrackDiskVectorsLoop:
  2099. move.l a6,a1            ;get TrackDiskBase
  2100. add.l (a3)+,a1            ;add offset to TrackDiskBase
  2101. move.l (a1),d2            ;write ROM-address to d2
  2102. move.l (a4)+,a0            ;get vectorbuffer
  2103. bsr hex                ;hex !!!
  2104. sub.l #1,d0            ;count down
  2105. cmp.l #0,d0            ;Zero ?
  2106. bne TrackDiskVectorsLoop    ;No, continue the loop !
  2107.  
  2108. bsr Findkeyboard        ;get KeyBoardBase
  2109. move.l -$0000001C(a1),d2    ;get offset
  2110. lea BeginIOVec(pc),a0        ;get vectorbuffer
  2111. bsr hex                ;hex !!!
  2112.  
  2113. move.l #4,d0            ;get counter
  2114. lea DOSVectorsList(pc),a3    ;get offsetlist
  2115. lea DOSVectorsNameList(pc),a4    ;get DOSVectorsNameList
  2116.  
  2117. DOSVectorsLoop:
  2118. move.l DosBase(pc),a6        ;get DosBase
  2119. add.l (a3)+,a6            ;add offset to DosBase
  2120. move.l (a6),d2            ;write ROM-address to d2
  2121. move.l (a4)+,a0            ;get vectorbuffer
  2122. bsr hex                ;hex !!!
  2123. sub.l #1,d0            ;count down
  2124. cmp.l #0,d0            ;Zero ?
  2125. bne DOSVectorsLoop        ;No, continue the loop !
  2126.  
  2127. move.l #2,d0            ;get counter
  2128. lea IntuitionVectorsList(pc),a3    ;get offsetlist
  2129. lea IntuitionVectorsNameList(pc),a4;get IntuitionVectorsNameList
  2130.  
  2131. IntuitionLoop:
  2132. move.l Intuibase(pc),a6        ;get IntuiBase
  2133. add.l (a3)+,a6            ;add offset to Intuibase
  2134. move.l (a6),d2            ;write ROM-address to d2
  2135. move.l (a4)+,a0            ;get vectorbuffer
  2136. bsr hex                ;hex !!!
  2137. sub.l #1,d0            ;count down
  2138. cmp.l #0,d0            ;Zero ?
  2139. bne IntuitionLoop        ;No, continue the loop !
  2140.  
  2141. move.l #Systemvectorstabletext,d2;get Systemvectorstabletext-Startaddress
  2142. move.l #Systemvectorstableend,d3;get Systemvectorstable-Endaddress
  2143. bsr PrintDOSText2        ;branch to subroutine
  2144. rts                ;return from subroutine
  2145.                     
  2146. hex:                
  2147. ;this routine converts the ROM-addresses to hexadecimal
  2148. ;numbers
  2149.  
  2150. move.l #8,d1            ;get counter
  2151.  
  2152. HexaLoop:
  2153. rol.l #4,d2            ;rotate 4 bits left
  2154. move.l d2,d3            ;get byte
  2155. and.b #$0f,d3            ;get nibble
  2156. add.b #$30,d3            ;get ciphers
  2157. cmp.b #$39,d3            ;d3 > 9 ?
  2158. ble display            ;No, diplay hexa-cipher
  2159. add.b #7,d3            ;Yes, get letter A-F
  2160.  
  2161. Display:
  2162. move.b d3,(a0)+            ;display one byte
  2163. sub.l #1,d1            ;count down
  2164. cmp.l #0,d1            ;Zero ?
  2165. bne HexaLoop            ;No, continue the loop !
  2166. rts                ;return from subroutine
  2167.  
  2168. vectorswait:
  2169. move.l Dosbase(pc),a6        ;get DosBase
  2170. move.l #300,d1            ;value for Delay
  2171. jsr Delay(a6)            ;call subroutine
  2172.  
  2173. CloseTable:
  2174. move.l Dosbase(pc),a6        ;get DosBase
  2175. move.l vectorshandle(pc),d1    ;get handle
  2176. jsr Close(a6)            ;call subroutine
  2177. rts                ;return from subroutine
  2178.  
  2179. PrintDOSText2:
  2180. move.l Dosbase(pc),a6        ;get DosBase
  2181. move.l vectorshandle(pc),d1    ;get handle
  2182. sub.l d2,d3            ;calculate textlength
  2183. jsr Write(a6)            ;call subroutine
  2184. rts                ;return from subroutine
  2185.  
  2186. vectorsend:
  2187. rts                ;return from subroutine
  2188.  
  2189. even
  2190. Table:
  2191. dc.b `CON:0/0/600/200/System-Vectors-Table:`,0
  2192.  
  2193. even
  2194. Vectorshandle:
  2195. dc.l 0
  2196.  
  2197. even
  2198. ExecVectorsNameList:
  2199. dc.l ColdCapture
  2200. dc.l CoolCapture
  2201. dc.l WarmCapture
  2202. dc.l CHKSumVec
  2203. dc.l KickCheckSum
  2204. dc.l DoIO
  2205. dc.l KickMemPtr
  2206. dc.l KickTagPtr
  2207. dc.l RasterBeamVec
  2208. dc.l OldOpenLibraryVec
  2209. dc.l OpenLibr
  2210. dc.l SKD
  2211. dc.l AlertVec
  2212. dc.l AllocMemVec
  2213. dc.l FreeMemVec
  2214. dc.l PutMsgVec
  2215. dc.l OpenDeviceVec
  2216.  
  2217. even
  2218. ExecVectorsList:
  2219. dc.l 42
  2220. dc.l 46
  2221. dc.l 50
  2222. dc.l 82
  2223. dc.l 554
  2224. dc.l -454
  2225. dc.l 546
  2226. dc.l 550
  2227. dc.l $90
  2228. dc.l -406
  2229. dc.l -550
  2230. dc.l -610
  2231. dc.l -106
  2232. dc.l -196
  2233. dc.l -208
  2234. dc.l -364
  2235. dc.l -442
  2236.  
  2237. even
  2238. TrackDiskVectorsNameList:
  2239. dc.l BeginIO
  2240. dc.l CloseVec
  2241.  
  2242. even
  2243. TrackDiskVectorsList:
  2244. dc.l -$0000001C
  2245. dc.l -$0000000A
  2246.  
  2247. even
  2248. DOSVectorsNameList:
  2249. dc.l OP
  2250. dc.l LoadSeg
  2251. dc.l WriteVec
  2252. dc.l LockVec
  2253.  
  2254. even
  2255. DOSVectorsList:
  2256. dc.l -28
  2257. dc.l -148
  2258. dc.l -46
  2259. dc.l -82
  2260.  
  2261. even
  2262. IntuitionVectorsNameList:
  2263. dc.l WindowOpen
  2264. dc.l DisplayAlertVec
  2265.  
  2266. even
  2267. IntuitionVectorsList:
  2268. dc.l -202
  2269. dc.l -88
  2270.  
  2271. even
  2272. Systemvectorstabletext:
  2273. dc.b `     ExecBase:`,10
  2274. dc.b `     ColdCapture:    $`
  2275. ColdCapture: dc.b `00000000`,0
  2276. dc.b ` CoolCapture:   $`
  2277. CoolCapture: dc.b `00000000`,10
  2278. dc.b `     WarmCapture:    $`
  2279. WarmCapture: dc.b `00000000`,0
  2280. dc.b ` ChkSum:        $`
  2281. CHKSumVec: dc.b `00000000`,10
  2282. dc.b `     KickMemPtr:     $`
  2283. KickMemPtr: dc.b `00000000`,0
  2284. dc.b ` KickTagPtr:    $`
  2285. KickTagPtr: dc.b `00000000`,10
  2286. dc.b `     KickCheckSum:   $`
  2287. KickCheckSum: dc.b `00000000`,0
  2288. dc.b ` RasterBeam Int.$`
  2289. RasterBeamVec: dc.b `00000000`,10
  2290. dc.b `     exec.library:`,10
  2291. dc.b `     Alert:          $`
  2292. AlertVec: dc.b `00000000`,0
  2293. dc.b ` AllocMem:      $`
  2294. AllocMemVec: dc.b `00000000`,10
  2295. dc.b `     FreeMem:        $`
  2296. FreeMemVec: dc.b `00000000`,0
  2297. dc.b ` PutMsg:        $`
  2298. PutMsgVec: dc.b `00000000`,10
  2299. dc.b `     OldOpenLibrary: $`
  2300. OldOpenLibraryVec: dc.b `00000000`,0
  2301. dc.b ` OpenDevice:    $`
  2302. OpenDeviceVec: dc.b `00000000`,10
  2303. dc.b `     DoIO:           $`
  2304. DoIO: dc.b `00000000`,0
  2305. dc.b ` OpenLibrary:   $`
  2306. OpenLibr: dc.b `00000000`,10
  2307. dc.b `     SumKickData:    $`
  2308. SKD: dc.b `00000000`,10
  2309. dc.b `     dos.library:`,10
  2310. dc.b `     Open:           $`
  2311. OP: dc.b `00000000`,0
  2312. dc.b ` Write:         $`
  2313. WriteVec: dc.b `00000000`,10
  2314. dc.b `     Lock:           $`
  2315. LockVec: dc.b `00000000`,0
  2316. dc.b ` LoadSeg:       $`
  2317. LoadSeg: dc.b `00000000`,10
  2318. dc.b `     intuition.library:`,10
  2319. dc.b `     DisplayAlert:   $`
  2320. DisplayAlertVec: dc.b `00000000`,0
  2321. dc.b ` OpenWindow:    $`
  2322. WindowOpen: dc.b `00000000`,10
  2323. dc.b `     trackdisk.device:`,10
  2324. dc.b `     BeginIO:        $`
  2325. BeginIO: dc.b `00000000`,0
  2326. dc.b ` Close:         $`
  2327. CloseVec: dc.b `00000000`,10
  2328. dc.b `     keyboard.device:`,10
  2329. dc.b `     BeginIO:        $`
  2330. BeginIOVec: dc.b `00000000`,10
  2331. Systemvectorstableend:
  2332.  
  2333. even
  2334. CheckMem:
  2335. move.l #129,d0
  2336. lea AbsoluteMemoryPositionVirusOffsetList(pc),a0
  2337. lea AbsoluteMemoryPositionVirusTestbytesList(pc),a1
  2338. lea AbsoluteMemoryPositionVirusNameList(pc),a3
  2339.  
  2340. CompareAbsMemLoop:
  2341. move.l (a0)+,a2            ;get offset
  2342. move.l (a2),d1            ;get longword from offset-position
  2343. cmp.l (a1)+,d1            ;is this longword = testbytes ?
  2344. beq AMIGAMemoryVirus        ;Yes, branch to AMIGAMemoryVirus
  2345. cmp.l #0,(a3)+            ;count AbsoluteMemoryPositionVirusNameList
  2346. sub.l #1,d0            ;count down
  2347. cmp.l #0,d0            ;Zero ?
  2348. bne CompareAbsMemLoop        ;No, continue the loop !
  2349.  
  2350. ColdRelativeMemoryPosition:
  2351. move.l #8,d0
  2352. lea ColdRelativeMemoryPositionVirusOffsetList(pc),a0
  2353. lea ColdRelativeMemoryPositionVirusTestbytesList(pc),a1
  2354. lea ColdRelativeMemoryPositionVirusNameList(pc),a3
  2355.  
  2356. CompareColdRelativeMemoryPositionLoop:
  2357. move.l (a0)+,d1            ;get offset
  2358. move.l ExecBase,a6        ;get ExecBase
  2359. move.l 42(a6),d2        ;get ColdCapture-Startaddress
  2360. add.l d2,d1            ;add offset to this Startaddress
  2361. move.l d1,a2            ;write d1 to a2
  2362. move.l (a2),d1            ;write longword from memory to d1
  2363. cmp.l (a1)+,d1            ;is this longword = testbytes ?
  2364. beq AMIGAMemoryVirus        ;Yes, branch to AMIGAMemoryVirus
  2365. cmp.l #0,(a3)+            ;count ColdRelativeMemoryPositionVirusNameList
  2366. sub.l #1,d0            ;count down
  2367. cmp.l #0,d0            ;Zero ?
  2368. bne CompareColdRelativeMemoryPositionLoop;No, continue the loop !
  2369.  
  2370. CoolRelativeMemoryPosition:
  2371. move.l #23,d0
  2372. lea CoolRelativeMemoryPositionVirusOffsetList(pc),a0
  2373. lea CoolRelativeMemoryPositionVirusTestbytesList(pc),a1
  2374. lea CoolRelativeMemoryPositionVirusNameList(pc),a3
  2375.  
  2376. CompareCoolRelativeMemoryPositionLoop:
  2377. move.l (a0)+,d1            ;get offset
  2378. move.l ExecBase,a6        ;get ExecBase
  2379. move.l 46(a6),d2        ;get CoolCapture-Startaddress
  2380. add.l d2,d1            ;add offset to this Startaddress
  2381. move.l d1,a2            ;write d1 to a2
  2382. move.l (a2),d1            ;write longword from memory to d1
  2383. cmp.l (a1)+,d1            ;is this longword = testbytes ?
  2384. beq AMIGAMemoryVirus        ;Yes, branch to AMIGAMemoryVirus
  2385. cmp.l #0,(a3)+            ;count CoolRelativeMemoryPositionVirusNameList
  2386. sub.l #1,d0            ;count down
  2387. cmp.l #0,d0            ;Zero ?
  2388. bne CompareCoolRelativeMemoryPositionLoop;No, continue the loop !
  2389.  
  2390. move.l ExecBase,a6        ;get ExecBase
  2391. move.l 550(a6),ROMTag        ;get first ROMTag
  2392.  
  2393. KickTagRelativeMemoryPosition:
  2394. move.l #56,d0
  2395. lea KickTagRelativeMemoryPositionVirusOffsetList(pc),a0
  2396. lea KickTagRelativeMemoryPositionVirusTestbytesList(pc),a1
  2397. lea KickTagRelativeMemoryPositionVirusNameList(pc),a3
  2398.  
  2399. CompareKickTagRelativeMemoryPositionLoop:
  2400. move.l (a0)+,d1            ;get offset
  2401. move.l ROMTag(pc),d2        ;get ROMTag-Startaddress
  2402. add.l d2,d1            ;add offset to this Startaddress
  2403. move.l d1,a2            ;write d1 to a2
  2404. move.l (a2),d1            ;write longword from memory to d1
  2405. cmp.l (a1)+,d1            ;is this longword = testbytes ?
  2406. beq AMIGAMemoryVirus        ;Yes, branch to AMIGAMemoryVirus
  2407. cmp.l #0,(a3)+            ;count KickTagRelativeMemoryPositionVirusNameList
  2408. sub.l #1,d0            ;count down
  2409. cmp.l #0,d0            ;Zero ?
  2410. bne CompareKickTagRelativeMemoryPositionLoop;No, continue the loop !
  2411.  
  2412. move.l ROMTag(pc),a0        ;get next ROMTag
  2413. cmp.l #0,4(a0)            ;any more lists ?
  2414. beq CheckMemNext        ;No, branch to CheckMemNext
  2415. move.l 4(a0),ROMTag        ;get next ROMTag
  2416. sub.l #$80000000,ROMTag        ;remove bit
  2417. bra KickTagRelativeMemoryPosition;scan the next ROMTag !
  2418.  
  2419. CheckMemNext:
  2420. lea HochofenName(pc),a1        ;get HochofenName-Address
  2421. bsr Task            ;branch to subroutine
  2422. cmp.l #0,d0            ;Zero ?
  2423. bne Hochofen            ;No, its the Hochofen-virus
  2424.  
  2425. lea ModemCheckerName(pc),a1    ;get ModemCheckerName-Address
  2426. bsr Task            ;branch to subroutine
  2427. cmp.l #0,d0            ;Zero ?
  2428. bne ModemChecker        ;No, its the ModemChecker-virus
  2429.  
  2430. cmp.l #0,RLBase            ;RLBase available ?
  2431. beq KillMem            ;No, branch to KillMem
  2432. move.l RLBase(pc),a6        ;get RLBase
  2433. cmp.l #0,RLStructPtr        ;RLStruct available ?
  2434. beq KillMem            ;No, branch to KillMem
  2435. move.l RLStructPtr(pc),a0    ;get RLStructPtr
  2436. jsr rlKillMemV(a6)        ;call subroutine
  2437. move.l RLStructPtr(pc),a0    ;get RLStruct
  2438. cmp.l #0,4(a0)            ;virus in memory ?
  2439. beq KillMem            ;no, branch to KillMem
  2440. move.l 4(a0),a0            ;get MemoryInfection-structure
  2441. lea 4(a0),a3            ;get VirusNamePtr
  2442. bra AMIGAMemoryVirus        ;branch to subroutine
  2443.  
  2444. Task:
  2445. move.l ExecBase,a6        ;get ExecBase
  2446. jsr FindTask(a6)        ;call subroutine
  2447. rts                ;return from subroutine
  2448.  
  2449. KillMem:
  2450. move.l ExecBase,a6        ;get ExecBase
  2451. cmp.l #0,42(a6)            ;is ColdCapture at zero ?
  2452. bne AskColdCapture        ;No, branch to AskColdCapture
  2453. KillMemII:
  2454. move.l ExecBase,a6        ;get ExecBase
  2455. cmp.l #0,46(a6)            ;is CoolCapture at zero ?
  2456. bne AskCoolCapture        ;No, branch to AskCoolCapture
  2457. KillMemIII:
  2458. move.l ExecBase,a6        ;get ExecBase
  2459. cmp.l #0,550(a6)        ;is KickTagPtr at zero ?
  2460. bne AskKickTagPtr        ;No, branch to KickTagPtr
  2461.  
  2462. KillMem2:
  2463. bra NoAMIGAMemoryVirus        ;branch to NoAMIGAMemoryVirus
  2464.  
  2465. AskColdCapture:
  2466. Requester #AColdText,#Yes,#No,#360,#70
  2467. cmp.l #1,d0            ;was Yes-Gadget touched ?
  2468. beq KillColdCapture        ;Yes, KillColdCapture
  2469. bra KillMemII            ;No, branch to KillMemII
  2470.  
  2471. AskCoolCapture:
  2472. Requester #ACoolText,#Yes,#No,#360,#70
  2473. cmp.l #1,d0            ;was Yes-Gadaget touched ?
  2474. beq KillCoolCapture        ;Yes, KillCoolCapture
  2475. bra KillMemIII            ;No, branch to KillMemIII
  2476.  
  2477. AskKickTagPtr:
  2478. Requester #AKickText,#Yes,#No,#360,#70
  2479. cmp.l #1,d0            ;was Yes-Gadget touched
  2480. beq KillKickTagPtr        ;Yes, KillKickTagPtr
  2481. bra NoAMIGAMemoryVirus        ;No, branch to NoAMIGAMemoryVirus
  2482.  
  2483. KillColdCapture:
  2484. move.l 4,a6            ;get ExecBase
  2485. clr.l 42(a6)            ;clear ColdCapture
  2486. bsr ChkSum            ;calculate new ChkSum
  2487. bra KillMemII            ;branch to KillMemII
  2488.  
  2489. KillCoolCapture:
  2490. move.l 4,a6            ;get ExecBase
  2491. clr.l 46(a6)            ;clear CoolCapture
  2492. bsr ChkSum            ;calculate new ChkSum
  2493. bra KillMemIII            ;branch to KillMemIII
  2494.  
  2495. ChkSum:
  2496. clr.w 82(a6)            ;clear old ChkSum
  2497. lea 34(a6),a0            ;get Versionnumber
  2498. clr.l d0            ;clear d0
  2499. moveq #23,d0            ;get counter
  2500. clr.w d1            ;clear d1
  2501. ChkSumLoop:
  2502. add.w (a0)+,d1            ;add the lower words
  2503.                 ;of the ExecBase-structure
  2504. dbf d0,ChkSumLoop        ;until d0 is count down
  2505.  
  2506. not.w d1            ;invert this sum
  2507. move.w d1,82(a6)        ;get new ChkSum
  2508. clr.l d0            ;clear d0
  2509. rts                ;return from subroutine
  2510.  
  2511. KillKickMemPtr:
  2512. move.l 4,a6            ;get ExecBase
  2513. move.l 546(a6),a0        ;get KickMemPtr
  2514. move.l (a0),d0            ;get successor
  2515. move.l d0,546(a6)        ;enter address of successor
  2516.                 ;to KickMemPtr
  2517. bsr KillKickCheckSum        ;calculate new KickCheckSum
  2518. rts                ;return from subroutine
  2519.  
  2520. KillKickTagPtr:
  2521. move.l 4,a6            ;get ExecBase
  2522. move.l 550(a6),a0        ;get KickTagPtr
  2523. move.l 4(a0),d0            ;get successor
  2524. move.l d0,550(a6)        ;enter address of successor
  2525.                 ;to KickTagPtr
  2526. cmp.l #0,550(a6)        ;new entry ?
  2527. beq NoAMIGAMemoryVirus        ;No, branch to NoAMIGAMemoryVirus
  2528. sub.l #$80000000,550(a6)    ;remove bit
  2529. bsr KillKickCheckSum        ;calculate new KickCheckSum
  2530. bra NoAMIGAMemoryVirus        ;branch to NoAMIGAMemoryVirus
  2531.  
  2532. KillKickCheckSum:
  2533. move.l 4,a6            ;get ExecBase
  2534. jsr -612(a6)            ;call subroutine
  2535. move.l d0,554(a6)        ;enter new KickCheckSum
  2536.                 ;to KickCheckSum
  2537. rts                ;return from subroutine
  2538.  
  2539. FindTrackDisk:
  2540. move.l ExecBase,a6        ;get ExecBase
  2541. lea $0000015E(a6),a0        ;get ListPtr
  2542. lea TrackName(pc),a1        ;get DevName
  2543. jsr FindName(a6)        ;call subroutine
  2544. move.l d0,a1            ;get address of TrackDisk
  2545. rts                ;return from subroutine
  2546.  
  2547. Findkeyboard:
  2548. move.l ExecBase,a6        ;get ExecBase
  2549. lea $0000015E(a6),a0        ;get ListPtr
  2550. lea KeyName(pc),a1        ;get DevName
  2551. jsr FindName(a6)        ;call subroutine
  2552. move.l d0,a1            ;get address of Keyboard
  2553. rts                ;return from subroutine
  2554.  
  2555. returntoSystem:
  2556. rts                ;return from subroutine
  2557.  
  2558. even
  2559. ROMTag:
  2560. dc.l 0
  2561.  
  2562. even
  2563. AColdText:
  2564. dc.b `Shall I restore ColdCapture ?`,0
  2565.  
  2566. even
  2567. ACoolText:
  2568. dc.b `Shall I restore CoolCapture ?`,0
  2569.  
  2570. even
  2571. AKickText:
  2572. dc.b `Shall I restore KickTagPtr ?`,0
  2573.  
  2574. even
  2575. TrackName:
  2576. dc.b `trackdisk.device`,0
  2577.  
  2578. even
  2579. KeyName:
  2580. dc.b `keyboard.device`,0
  2581.  
  2582. even
  2583. Hochofenname:
  2584. dc.b `Greetings to Hochofen`,0
  2585.  
  2586. even
  2587. ModemCheckerName:
  2588. dc.b `Diskdriver.proc`,0
  2589.  
  2590. even
  2591. AbsoluteMemoryPositionVirusNameList:
  2592. dc.l The16BitCrewText
  2593. dc.l The2001Text
  2594. dc.l AEKText
  2595. dc.l AIDSText
  2596. dc.l AlienNewBeatText
  2597. dc.l AmigaMasterText
  2598. dc.l ASSText
  2599. dc.l ASVText
  2600. dc.l AsylantText
  2601. dc.l BamigaSectorOneText
  2602. dc.l BBProtText
  2603. dc.l BeethovenText
  2604. dc.l BigBossText
  2605. dc.l BlackflashText
  2606. dc.l BladeRunnersText
  2607. dc.l BLFText
  2608. dc.l BlowJobText
  2609. dc.l BretHawnesText
  2610. dc.l ButonicText
  2611. dc.l ByteVoyagerText
  2612. dc.l ByteVoyagerIIText
  2613. dc.l CascadeText
  2614. dc.l ClonkText
  2615. dc.l CodersNightmareText
  2616. dc.l ColorText
  2617. dc.l CompuPhagozyteText
  2618. dc.l CompuPhagozyte2Text
  2619. dc.l CompuPhagozyteIIText
  2620. dc.l CompuPhagozyteIIIText
  2621. dc.l CompuPhagozyteIIIBCText
  2622. dc.l CompuPhagozyteIVText
  2623. dc.l DStructureText
  2624. dc.l DAGText
  2625. dc.l DAT89Text
  2626. dc.l DATACRIMEText
  2627. dc.l DigitalEmotionsText
  2628. dc.l DisgustText
  2629. dc.l DiskguardText
  2630. dc.l DiskHerpesText
  2631. dc.l DiskTerminatorText
  2632. dc.l DottyText
  2633. dc.l DUMDUMText
  2634. dc.l ExcrementText
  2635. dc.l ExecutorsText
  2636. dc.l FASTText
  2637. dc.l FastEddieText
  2638. dc.l GadaffiText
  2639. dc.l GlasnostText
  2640. dc.l GoldenRiderText
  2641. dc.l GraffitiText
  2642. dc.l GremlinText
  2643. dc.l GXTeamText
  2644. dc.l GyrosText
  2645. dc.l HCSText
  2646. dc.l HCSIIText
  2647. dc.l HillyText
  2648. dc.l HODENText
  2649. dc.l IceText
  2650. dc.l IndianaJonesText
  2651. dc.l InfectorText
  2652. dc.l InfluenzaText
  2653. dc.l INGOText
  2654. dc.l JITRText
  2655. dc.l JulieText
  2656. dc.l KaukiText
  2657. dc.l KefrensText
  2658. dc.l KilledText
  2659. dc.l LADSText
  2660. dc.l LoverboySexmachineText
  2661. dc.l LSDText
  2662. dc.l MADIIText
  2663. dc.l MEXXText
  2664. dc.l MGM89Text
  2665. dc.l MOSHText
  2666. dc.l MOSH2Text
  2667. dc.l MutilatorText
  2668. dc.l NANOoldText
  2669. dc.l NANOnewText
  2670. dc.l NastyNastyText
  2671. dc.l NorthStarText
  2672. dc.l NorthStarIIText
  2673. dc.l OverkillText
  2674. dc.l PARATAXIText
  2675. dc.l PARATAXIIIText
  2676. dc.l PayDayText
  2677. dc.l PentagonSlayerText
  2678. dc.l PentagonSlayer2Text
  2679. dc.l PentagonSlayer3Text
  2680. dc.l PlastiqueText
  2681. dc.l REPText
  2682. dc.l REVENGEText
  2683. dc.l SachsenText
  2684. dc.l SADDAMHUSSEINText
  2685. dc.l SaoPauloText
  2686. dc.l SATANText
  2687. dc.l SCAText
  2688. dc.l SendarionText
  2689. dc.l SherlockText
  2690. dc.l SmilyCancerText
  2691. dc.l SSText
  2692. dc.l SSIIText
  2693. dc.l SuicideMachineText
  2694. dc.l SuperboyText
  2695. dc.l SupplyTeamText
  2696. dc.l SystemZV30Text
  2697. dc.l SystemZV40Text
  2698. dc.l SystemZV50Text
  2699. dc.l SystemZV51Text
  2700. dc.l SystemZV53Text
  2701. dc.l SystemZV54Text
  2702. dc.l SystemZV61Text
  2703. dc.l TargetText
  2704. dc.l TelStarText
  2705. dc.l TermigatorText
  2706. dc.l TIMEBOMBText
  2707. dc.l TNKText
  2708. dc.l TomatesGentechnic10Text
  2709. dc.l TomatesGentechnic20text
  2710. dc.l TURKText
  2711. dc.l UltrafoxText
  2712. dc.l USSR492Text
  2713. dc.l VirusConstructionSetBootblockText
  2714. dc.l VirusSlayerText
  2715. dc.l VirusV1Text
  2716. dc.l WahnfriedText
  2717. dc.l WARHAWKText
  2718. dc.l ZaccessV10Text
  2719. dc.l ZLXText
  2720. dc.l ZombiText
  2721.  
  2722. even
  2723. AbsoluteMemoryPositionVirusTestbytesList:
  2724. dc.l $43726577
  2725. dc.l $30303132
  2726. dc.l ` AEK`
  2727. dc.l $48495621
  2728. dc.l `ALIE`
  2729. dc.l `Mast`
  2730. dc.l `ROTE`
  2731. dc.l `SV!A`
  2732. dc.l `ASYL`
  2733. dc.l `BS1!`
  2734. dc.l `B-Pr`
  2735. dc.l `BETH`
  2736. dc.l `A!BI`
  2737. dc.l `blac`
  2738. dc.l `lade`
  2739. dc.l `trac`
  2740. dc.l `cato`
  2741. dc.l `BRET`
  2742. dc.l `BAHA`
  2743. dc.l `VOYA`
  2744. dc.l `oyag`
  2745. dc.l `Casc`
  2746. dc.l `LONK`
  2747. dc.l `oder`
  2748. dc.l `TURK`
  2749. dc.l `gozy`
  2750. dc.l `The `
  2751. dc.l `COMP`
  2752. dc.l `agoz`
  2753. dc.l `gozy`
  2754. dc.l `agoz`
  2755. dc.l `Stru`
  2756. dc.l `from`
  2757. dc.l `T '8`
  2758. dc.l `DATA`
  2759. dc.l `EMOT`
  2760. dc.l `Viru`
  2761. dc.l `DISK`
  2762. dc.l ` H e`
  2763. dc.l `isk-`
  2764. dc.l `Dott`
  2765. dc.l `MDUM`
  2766. dc.l `EXCR`
  2767. dc.l `XECU`
  2768. dc.l `ains`
  2769. dc.l `EDDI`
  2770. dc.l $47414441
  2771. dc.l `Glas`
  2772. dc.l `Gold`
  2773. dc.l `fiti`
  2774. dc.l `grap`
  2775. dc.l `libr`
  2776. dc.l `GYRO`
  2777. dc.l $482E432E
  2778. dc.l `H.C.`
  2779. dc.l `dos.`
  2780. dc.l `HODE`
  2781. dc.l `INC!`
  2782. dc.l `ndia`
  2783. dc.l `INFE`
  2784. dc.l `I N `
  2785. dc.l `INGO`
  2786. dc.l `JITR`
  2787. dc.l `dos.`
  2788. dc.l `dos.`
  2789. dc.l `efre`
  2790. dc.l `Kill`
  2791. dc.l `LADS`
  2792. dc.l `Love`
  2793. dc.l $4C534421
  2794. dc.l $004D4144
  2795. dc.l `MEXX`
  2796. dc.l `MGM8`
  2797. dc.l `MOSH`
  2798. dc.l `MOSH`
  2799. dc.l `grap`
  2800. dc.l `N A `
  2801. dc.l `Nano`
  2802. dc.l `Nast`
  2803. dc.l $4E4F5254
  2804. dc.l $57726974
  2805. dc.l `Over`
  2806. dc.l `PARA`
  2807. dc.l `PARA`
  2808. dc.l `PayD`
  2809. dc.l $656E7461
  2810. dc.l `enta`
  2811. dc.l `enta`
  2812. dc.l ` L A`
  2813. dc.l `REP!`
  2814. dc.l $52657665
  2815. dc.l `ACHS`
  2816. dc.l `2000`
  2817. dc.l `PAUL`
  2818. dc.l `ATAN`
  2819. dc.l $53434121
  2820. dc.l `Send`
  2821. dc.l `ORSI`
  2822. dc.l $52494F4E
  2823. dc.l `!SS!`
  2824. dc.l `HEIL`
  2825. dc.l `uici`
  2826. dc.l `Supe`
  2827. dc.l `uppl`
  2828. dc.l ` V3.`
  2829. dc.l ` V4.`
  2830. dc.l ` V5.`
  2831. dc.l `5.1 `
  2832. dc.l `V5.3`
  2833. dc.l `V5.4`
  2834. dc.l `V6.1`
  2835. dc.l $43524E00
  2836. dc.l `grap`
  2837. dc.l `NsAx`
  2838. dc.l $424F4D42
  2839. dc.l `TNK!`
  2840. dc.l `OMAT`
  2841. dc.l `Toma`
  2842. dc.l `TURK`
  2843. dc.l `NuNu`
  2844. dc.l `Sent`
  2845. dc.l $00BFE001
  2846. dc.l `VIRU`
  2847. dc.l `sind`
  2848. dc.l `AHNF`
  2849. dc.l `WARH`
  2850. dc.l `ZACC`
  2851. dc.l `ZLX!`
  2852. dc.l `bi I`
  2853.  
  2854. even
  2855. AbsoluteMemorypositionVirusOffsetList:
  2856. dc.l $0007EDE0
  2857. dc.l $0007EFE8
  2858. dc.l $0007EFD0
  2859. dc.l $0007EFF0
  2860. dc.l $00020240
  2861. dc.l $0007EF30
  2862. dc.l $0007F4B2
  2863. dc.l $0007DF00
  2864. dc.l $0007EF30
  2865. dc.l $0007EFE8
  2866. dc.l $0007A338
  2867. dc.l $0007F008
  2868. dc.l $0007EFE2
  2869. dc.l $0007F010
  2870. dc.l $0007EF30
  2871. dc.l $0007F31A
  2872. dc.l $0007F02E
  2873. dc.l $0007F004
  2874. dc.l $0007EF2C
  2875. dc.l $0007F330
  2876. dc.l $0007F2E2
  2877. dc.l $0007E3E2
  2878. dc.l $0007D398
  2879. dc.l $0007FA5C
  2880. dc.l $00070260
  2881. dc.l $0007C400
  2882. dc.l $0007C380
  2883. dc.l $0007C1B0
  2884. dc.l $0007C35C
  2885. dc.l $0007C030
  2886. dc.l $0007C030
  2887. dc.l $0007C168
  2888. dc.l $0007EFB6
  2889. dc.l $0007FAC0
  2890. dc.l $0007DDC6
  2891. dc.l $0007EE80
  2892. dc.l $0007EDB8
  2893. dc.l $0007FCF4
  2894. dc.l $0007EF90
  2895. dc.l $0007EF24
  2896. dc.l $0007F018
  2897. dc.l $0007FA10
  2898. dc.l $0007F454
  2899. dc.l $0007EF48
  2900. dc.l $0007F240
  2901. dc.l $0007F3D4
  2902. dc.l $0007FB40
  2903. dc.l $0007F730
  2904. dc.l $0007C34C
  2905. dc.l $0007EF90
  2906. dc.l $0007F760
  2907. dc.l $0007F8C0
  2908. dc.l $0007EE3E
  2909. dc.l $0007EF44
  2910. dc.l $0007EF4E
  2911. dc.l $0007F440
  2912. dc.l $0007F2D4
  2913. dc.l $0007EFE4
  2914. dc.l $0007E91E
  2915. dc.l $0007F310
  2916. dc.l $0007F3D2
  2917. dc.l $0007F408
  2918. dc.l $0007EC18
  2919. dc.l $0007F826
  2920. dc.l $0007EE98
  2921. dc.l $0007EFAC
  2922. dc.l $0007EE64
  2923. dc.l $0007F408
  2924. dc.l $0007EDD6
  2925. dc.l $0007EFE4
  2926. dc.l $0007FB72
  2927. dc.l $0007EFE4
  2928. dc.l $0007E582
  2929. dc.l $0007C016
  2930. dc.l $0007C016
  2931. dc.l $0007CD4C
  2932. dc.l $0007C492
  2933. dc.l $0007C03A
  2934. dc.l $0007F1D6
  2935. dc.l $0007EF84
  2936. dc.l $0007EF9A
  2937. dc.l $0007F722
  2938. dc.l $0007EFCC
  2939. dc.l $0007EE82
  2940. dc.l $0007EC10
  2941. dc.l $0007FD86
  2942. dc.l $0007F368
  2943. dc.l $0007E2DA
  2944. dc.l $0007EE12
  2945. dc.l $0007EFE4
  2946. dc.l $0007E3E2
  2947. dc.l $000782D8
  2948. dc.l $0007F012
  2949. dc.l $0007FEF0
  2950. dc.l $0007CF26
  2951. dc.l $0007EFE8
  2952. dc.l $0007E3E2
  2953. dc.l $0007FCF6
  2954. dc.l $0007FB00
  2955. dc.l $0007C012
  2956. dc.l $0007C01A
  2957. dc.l $0007E424
  2958. dc.l $0007EEE2
  2959. dc.l $0007F2C8
  2960. dc.l $0007F42A
  2961. dc.l $0007F42A
  2962. dc.l $0007F42A
  2963. dc.l $0007F42C
  2964. dc.l $0007F42A
  2965. dc.l $0007F42A
  2966. dc.l $0007F42A
  2967. dc.l $0007ED9C
  2968. dc.l $0007FED4
  2969. dc.l $0007F712
  2970. dc.l $00070346
  2971. dc.l $0007EFE4
  2972. dc.l $00070182
  2973. dc.l $0007F640
  2974. dc.l $0007F066
  2975. dc.l $0007EDB0
  2976. dc.l $0007F454
  2977. dc.l $0007F146
  2978. dc.l $0007FA10
  2979. dc.l $0007EF22
  2980. dc.l $0007F312
  2981. dc.l $0007E966
  2982. dc.l $0007EDD6
  2983. dc.l $0007EFE4
  2984. dc.l $0007A18C
  2985.  
  2986.  
  2987. even
  2988. ColdRelativeMemoryPositionVirusNameList:
  2989. dc.l DestructorText
  2990. dc.l DiskVal1234Text
  2991. dc.l HARDEXText
  2992. dc.l Joshua2Text
  2993. dc.l LAMEText
  2994. dc.l LOOMText
  2995. dc.l RISCText
  2996. dc.l SADDAMText
  2997.  
  2998. even
  2999. ColdRelativeMemoryPositionVirusTestbytesList:
  3000. dc.l `estr`
  3001. dc.l $0C681234
  3002. dc.l `RDEX`
  3003. dc.l `trac`
  3004. dc.l `LAME`
  3005. dc.l `LOOO`
  3006. dc.l `ISC `
  3007. dc.l `libr`
  3008.  
  3009. even
  3010. ColdRelativeMemoryPositionVirusOffsetList:
  3011. dc.l $00000180
  3012. dc.l $00000148
  3013. dc.l $0000057E
  3014. dc.l $00000242
  3015. dc.l $0000014A
  3016. dc.l $0000057C
  3017. dc.l $0000057E
  3018. dc.l $00000560
  3019.  
  3020. even
  3021. CoolRelativeMemoryPositionVirusNameList:
  3022. dc.l AIDS2Text
  3023. dc.l AngelText
  3024. dc.l AustralianParasiteText
  3025. dc.l BadBytesText
  3026. dc.l BlizzProV31Text
  3027. dc.l BlizzProV33Text
  3028. dc.l CCCPText
  3029. dc.l CrackerExterminatorText
  3030. dc.l Crime2Text
  3031. dc.l CrimePlusText
  3032. dc.l DarthVaderText
  3033. dc.l DiskDoktorsText
  3034. dc.l DISKFurunkelText
  3035. dc.l DivinaExterminatorText
  3036. dc.l ExcrementText
  3037. dc.l LameBlameText
  3038. dc.l MICROSYSTEMSText
  3039. dc.l MOSH2Text
  3040. dc.l ObeliskText
  3041. dc.l PARATAXIIText
  3042. dc.l QRDLText
  3043. dc.l USSR492Text
  3044. dc.l WAFTText
  3045.  
  3046. even
  3047. CoolRelativeMemoryPositionVirusTestbytesList:
  3048. dc.l `A'e*`
  3049. dc.l `Ange`
  3050. dc.l `Aust`
  3051. dc.b `TTS `
  3052. dc.l `Bliz`
  3053. dc.l `Bliz`
  3054. dc.l `CCCP`
  3055. dc.l `CRAC`
  3056. dc.l `Crim`
  3057. dc.l `rime`
  3058. dc.l `DART`
  3059. dc.l `Dokt`
  3060. dc.l `DISK`
  3061. dc.l `IVIN`
  3062. dc.l `EXCR`
  3063. dc.l `ameB`
  3064. dc.l `MICR`
  3065. dc.l `MOSH`
  3066. dc.l `GURU`
  3067. dc.l `ARAT`
  3068. dc.l `QRDL`
  3069. dc.l `Sent`
  3070. dc.l `est-`
  3071.  
  3072. even
  3073. CoolRelativeMemoryPositionVirusOffsetList:
  3074. dc.l $0000033E
  3075. dc.l $00000262
  3076. dc.l $000002DE
  3077. dc.l $00000310
  3078. dc.l -$00000222
  3079. dc.l -$00000238
  3080. dc.l -$00000030
  3081. dc.l -$00000096
  3082. dc.l $00000346
  3083. dc.l $000002B8
  3084. dc.l $00000268
  3085. dc.l $0000017C
  3086. dc.l $0000035C
  3087. dc.l $000002EA
  3088. dc.l -$00000026
  3089. dc.l $00000050
  3090. dc.l $0000032C
  3091. dc.l -$00000072
  3092. dc.l -$00000034
  3093. dc.l $0000013C
  3094. dc.l $00000190
  3095. dc.l -$00000026
  3096. dc.l $000002DE
  3097.  
  3098. even
  3099. KickTagRelativeMemoryPositionVirusNameList:
  3100. dc.l AmigaFreakText
  3101. dc.l AmigaKnightText
  3102. dc.l BGS9Text
  3103. dc.l BootXText
  3104. dc.l ByteBanditText
  3105. dc.l ByteBanditPlusText
  3106. dc.l ByteBandit2Text
  3107. dc.l ByteBanditturboText
  3108. dc.l ByteWarriorText
  3109. dc.l CobraText
  3110. dc.l DetlefText
  3111. dc.l DisasterMasterText
  3112. dc.l ElectroVisionText
  3113. dc.l EuropeanText
  3114. dc.l ExtremeText
  3115. dc.l FICAText
  3116. dc.l ForpibText
  3117. dc.l FrityText
  3118. dc.l GermanyText
  3119. dc.l GuardiansBootAidsText
  3120. dc.l HaukeText
  3121. dc.l IncognitoText
  3122. dc.l IngerIQText
  3123. dc.l IngosReturnText
  3124. dc.l IRQText
  3125. dc.l JeffBUTONICV131Text
  3126. dc.l JeffBUTONICV300Text
  3127. dc.l JoshuaText
  3128. dc.l LamerExterminatoroldIIIText
  3129. dc.l LamerExterminatornewText
  3130. dc.l LamerExterminatorIText
  3131. dc.l LamerExterminatorIIText
  3132. dc.l LamerExterminatorIVVText
  3133. dc.l LamerExterminatorVIText
  3134. dc.l LamerExterminatorVIIText
  3135. dc.l LamerExterminatorVIIIText
  3136. dc.l NaSTText
  3137. dc.l Obelisk2Text
  3138. dc.l OPAPAText
  3139. dc.l ReturnoftheLamerExterminatorText
  3140. dc.l RevengeBootloaderText
  3141. dc.l RevengeOfTheLAMERExterminatorText
  3142. dc.l RevengeOfTheLAMERExterminatorText
  3143. dc.l SCARFACEText
  3144. dc.l SEPULTURAText
  3145. dc.l ShitText
  3146. dc.l SonjaText
  3147. dc.l SystemZV64Text
  3148. dc.l SystemZV65Text
  3149. dc.l TerroristsText
  3150. dc.l TFCRevengeText
  3151. dc.l UKLamerStyleText
  3152. dc.l VIPHSText
  3153. dc.l WarsawAvengerText
  3154. dc.l ZaccessV20Text
  3155. dc.l ZaccessV30Text
  3156.  
  3157. even
  3158. KickTagRelativeMemoryPositionVirusTestbytesList:
  3159. dc.l `AMIG`
  3160. dc.l `STAR`
  3161. dc.l `TTV1`
  3162. dc.l `Boot`
  3163. dc.l $42616E64
  3164. dc.l `NqNq`
  3165. dc.l `dos.`
  3166. dc.l `trac`
  3167. dc.l `Viru`
  3168. dc.l `OBRA`
  3169. dc.l `intu`
  3170. dc.l `-seq`
  3171. dc.l `ELEC`
  3172. dc.l `Euro`
  3173. dc.l `XTRE`
  3174. dc.l `F.I.`
  3175. dc.l `FORP`
  3176. dc.l `rity`
  3177. dc.l `Germ`
  3178. dc.l `-aid`
  3179. dc.l `Hauk`
  3180. dc.l `dos.`
  3181. dc.l `nger`
  3182. dc.l `INGO`
  3183. dc.l `RQ-T`
  3184. dc.l `JEFF`
  3185. dc.l `DASA`
  3186. dc.l `trac`
  3187. dc.l `LAME`
  3188. dc.l `LAME`
  3189. dc.l `AMER`
  3190. dc.l `LAME`
  3191. dc.l `AMER`
  3192. dc.l `AMER`
  3193. dc.l `LAME`
  3194. dc.l `LAME`
  3195. dc.l `NaST`
  3196. dc.l `BELI`
  3197. dc.l `PARA`
  3198. dc.l `amer`
  3199. dc.l `Reve`
  3200. dc.l $38204F63
  3201. dc.l `1986`
  3202. dc.l `SCAR`
  3203. dc.l `brar`
  3204. dc.l `SHIT`
  3205. dc.l `onja`
  3206. dc.l `V6.4`
  3207. dc.l `V6.5`
  3208. dc.l `TTV1`
  3209. dc.l `anat`
  3210. dc.l `devi`
  3211. dc.l `VIPH`
  3212. dc.l `rsaw`
  3213. dc.l `ZACC`
  3214. dc.l `ACCE`
  3215.  
  3216. even
  3217. KickTagRelativeMemoryPositionVirusOffsetList:
  3218. dc.l -$000003C4
  3219. dc.l $00000242
  3220. dc.l $00000A26
  3221. dc.l -$00000184
  3222. dc.l -$000003C2
  3223. dc.l -$0000013C
  3224. dc.l -$000003BC
  3225. dc.l -$0000002A
  3226. dc.l $000002B4
  3227. dc.l -$00000052
  3228. dc.l $00000218
  3229. dc.l $00000562
  3230. dc.l -$000003D2
  3231. dc.l -$000003D2
  3232. dc.l -$000001A2
  3233. dc.l $000004CA
  3234. dc.l -$000003C8
  3235. dc.l -$000003CA
  3236. dc.l -$000003D2
  3237. dc.l -$00000024
  3238. dc.l -$000003D2
  3239. dc.l -$000003BE
  3240. dc.l -$000003CE
  3241. dc.l -$0000002A
  3242. dc.l -$00000348
  3243. dc.l $0000099C
  3244. dc.l $000001A6
  3245. dc.l $000000EA
  3246. dc.l -$0000002E
  3247. dc.l -$00000028
  3248. dc.l -$00000022
  3249. dc.l -$0000002A
  3250. dc.l -$00000026
  3251. dc.l -$00000028
  3252. dc.l -$00000090
  3253. dc.l -$00000064
  3254. dc.l $0000009C
  3255. dc.l -$0000009C
  3256. dc.l -$00000098
  3257. dc.l -$000000DC
  3258. dc.l -$000003B8
  3259. dc.l -$00000834
  3260. dc.l -$0000082A
  3261. dc.l -$0000003E
  3262. dc.l $00000698
  3263. dc.l -$0000017C
  3264. dc.l -$0000001E
  3265. dc.l -$000003DA
  3266. dc.l -$000003DA
  3267. dc.l $0000007A
  3268. dc.l -$00000126 
  3269. dc.l -$000000E0
  3270. dc.l -$00000398
  3271. dc.l -$00000370
  3272. dc.l -$000003CC
  3273. dc.l -$0000019C
  3274.  
  3275. NoAMIGAMemoryVirus:
  3276. cmp.b #$FF,fastcheck        ;was fastcheck-flag set ?
  3277. beq returntoSystem        ;Yes, returntoSystem
  3278.  
  3279. move.l ExecBase,a6        ;get ExecBase
  3280. move.l #MEMF_LARGEST,d1        ;want connected memory
  3281. move.l #$5000,d0        ;want $5000 bytes
  3282. jsr AllocMem(a6)        ;call subroutine
  3283.  
  3284. move.l d0,DiskValMem        ;get MemPtr
  3285. tst.l d0            ;error ?
  3286. beq NoMemAlert            ;Yes, branch to NoMemAlert
  3287. clr.b TrackdiskFlag        ;clear TrackDiskFlag
  3288.  
  3289. clr.l AddressCounter        ;clear AddressCounter
  3290. clr.l DriveCounter        ;clear DriveCounter
  3291. clr.l DriveLoopCounter        ;clear DriveLoopCounter
  3292. clr.l OpenDriveCount        ;clear OpenDriveCount
  3293.  
  3294. OpenDrivesLoop:
  3295. bsr BootblockStart        ;open TrackDiskDevice
  3296. cmp.b #$FF,TrackdiskFlag    ;No more drives ?
  3297. beq OpenDrivesLoopEnd        ;Yes, end the loop
  3298. add.l #4,AddressCounter        ;count up AddressCounter
  3299. add.l #1,DriveCounter        ;count up DriveCounter
  3300. add.l #1,OpenDriveCount        ;count up OpenDriveCount
  3301. cmp.l #4,OpenDriveCount        ;all floopydisks opened ?
  3302. bne OpenDrivesLoop
  3303.  
  3304. OpenDrivesLoopEnd:
  3305. cmp.l #0,OpenDriveCount        ;TrackDisk-Error ?
  3306. beq IntuiEnde2            ;Yes, branch to IntuiEnde2
  3307.  
  3308. sub.l #4,AddressCounter        ;correct AddressCounter
  3309. sub.l #1,DriveCounter        ;correct DriveCounter
  3310.  
  3311. move.l Intuibase(pc),a6        ;get Intuibase
  3312. lea NewWindow(pc),a0        ;get NewWindow-structure
  3313. jsr OpenWindow(a6)        ;call subroutine
  3314. move.l d0,Winhandle        ;get Winhandle
  3315. bra IntuiWait3            ;branch to IntuiWait3
  3316.  
  3317. IntuiWait:
  3318. move.l Winhandle(pc),a0        ;get Winhandle
  3319. move.l ExecBase,a6        ;get ExecBase
  3320. move.l 86(a0),a0        ;get Message
  3321. jsr GetMsg(a6)            ;call subroutine
  3322.  
  3323. IntuiWait3:
  3324. move.l Winhandle(pc),a0        ;get Winhandle
  3325. move.l 86(a0),a0        ;get Message
  3326. move.l ExecBase,a6        ;get ExecBase
  3327. jsr WaitPort(a6)        ;call subroutine
  3328. move.l d0,a1            ;get Message
  3329. move.l 20(a1),d1        ;write Message to d1    
  3330. cmp.l #$8000,d1            ;Diskinserted ?
  3331. beq VirusCheck          ;Yes, branch to VirusCheck
  3332.  
  3333. IntuiPart2:
  3334. cmp.l #$200,d1            ;WindowClosed ?
  3335. beq IntuiEnde            ;Yes, end Intui
  3336. bra IntuiWait            ;branch to IntuiWait
  3337.  
  3338. IntuiEnde:
  3339. move.l Winhandle(pc),a0        ;get Winhandle
  3340. move.l Intuibase(pc),a6        ;get Intuibase
  3341. jsr CloseWindow(a6)        ;call subroutine
  3342.  
  3343. clr.l AddressCounter        ;clear AddressCounter
  3344. clr.l DriveCounter        ;clear DriveCounter
  3345. clr.l DriveLoopCounter        ;clear DriveLoopCounter
  3346.  
  3347. CloseDriveLoop:
  3348. add.l #1,DriveLoopCounter    ;count up DriveLoopCounter
  3349. bsr BootblockEnde        ;close TrackDiskDevice
  3350. add.l #4,AddressCounter        ;count up AddressCounter
  3351. add.l #1,DriveCounter        ;count up DriveCounter
  3352. move.l DriveLoopCounter(pc),d0    ;get DriveLoopCounter
  3353. cmp.l OpenDriveCount,d0        ;all drives closed ?
  3354. bne CloseDriveLoop        ;No, continue the loop
  3355.  
  3356. IntuiEnde2:
  3357. move.l ExecBase,a6        ;get ExecBase
  3358. move.l DiskValMem(pc),a1    ;get DiskValMemPtr
  3359. move.l #$5000,d0        ;deallocate $5000 bytes
  3360. jsr FreeMem(a6)            ;call subroutine
  3361. rts                ;return from subroutine
  3362.  
  3363. Even
  3364. NewWindow:
  3365. dc.w 100
  3366. dc.w 0
  3367. dc.w 400
  3368. dc.w 10
  3369. dc.b 0
  3370. dc.b 1
  3371. dc.l $200!$8000
  3372. dc.l $1000!1!2!4!8
  3373. dc.l 0
  3374. dc.l 0
  3375. dc.l Windowtitle
  3376. dc.l 0
  3377. dc.l 0
  3378. dc.w 300
  3379. dc.w 10
  3380. dc.w 300
  3381. dc.w 10
  3382. dc.w 1
  3383.  
  3384.  
  3385. even
  3386. WindowTitle:
  3387. dc.b `AntiCicloVir V2.4 by Matthias Gutt`,0
  3388.  
  3389. even
  3390. Winhandle:
  3391. dc.l 0
  3392.  
  3393.  
  3394. BootblockStart:
  3395. move.l ExecBase,a6        ;get ExecBase
  3396. move.l #MEMF_CHIP!MEMF_LARGEST,d1;get connected CHIP-RAM
  3397. move.l #$2048,d0        ;want $2048 bytes
  3398. jsr AllocMem(a6)        ;call subroutine
  3399. tst.l d0            ;error ?
  3400. beq BootblockCheckEnde        ;Yes, end BootblockCheck
  3401. lea Sectorbuffer(pc),a0        ;get Sectorbufferbase
  3402. add.l AddressCounter(pc),a0    ;get AddressCounter
  3403. move.l d0,(a0)          ;No, get Sectorbufferaddress
  3404. move.l d0,TrackSecBuffer    ;get Sectorbuffer in TrackDiskIOStdReq-structure
  3405. cmp.l #0,DriveCounter        ;first floopydisk ?
  3406. bne BootblockStart2        ;No, skip to BootBlockStart2
  3407.  
  3408. move.l #0,a1            ;my task
  3409. bsr Task            ;branch to subroutine
  3410. move.l d0,AntiCicloTask        ;get TaskPtr
  3411.  
  3412. move.l ExecBase,a6        ;get ExecBase
  3413. move.l #-1,d0            ;allocate free signal
  3414. jsr AllocSignal(a6)        ;call subroutine
  3415. cmp.l #0,d0            ;error ?
  3416. ble BootblockCheckEnde        ;Yes, end the BootblockCheck
  3417. clr.l d7            ;No, clear d7
  3418. move.l d0,d7            ;get Signalbit
  3419. move.b d0,Sigbit        ;get Signalbit in MsgPort-Structure
  3420.  
  3421. BootblockStart2:
  3422. move.l ExecBase,a6        ;get ExecBase
  3423. move.l #MEMF_PUBLIC!MEMF_CHIP!MEMF_CLEAR!MEMF_LARGEST,d1
  3424. move.l #100,d0            ;need 100 bytes
  3425. jsr AllocMem(a6)        ;call subroutine
  3426. tst.l d0            ;error ?
  3427. beq FreeSignalIt        ;Yes, end BootBlockCheck
  3428. lea DeviceMem(pc),a0        ;get DeviceMemBase
  3429. add.l AddressCounter(pc),a0    ;get AddressCounter
  3430. move.l d0,(a0)            ;get DeviceMemPtr
  3431. move.l d0,TrackDeviceMem    ;get DeviceMemPtr in TrackDiskIOStdReq-structure
  3432.  
  3433. move.l ExecBase,a6        ;get ExecBase
  3434. lea DeviceMem(pc),a0        ;get DeviceMemBase
  3435. add.l AddressCounter(pc),a0    ;get AddressCounter
  3436. move.l (a0),a1            ;get DeviceMemPtr
  3437. lea Device(pc),a0        ;get Device-structure
  3438. move.l #40,d0            ;get size
  3439. jsr CopyMem(a6)            ;call subroutine
  3440.  
  3441. move.l ExecBase,a6        ;get ExecBase
  3442. move.l #MEMF_PUBLIC!MEMF_CHIP!MEMF_CLEAR!MEMF_LARGEST,d1
  3443. move.l #100,d0            ;need 100 bytes
  3444. jsr AllocMem(a6)        ;call subroutine
  3445. tst.l d0            ;error ?
  3446. beq BootblockCheckEnde2        ;Yes, end BootBlockCheck
  3447. lea UnitMem(pc),a0        ;get UnitMemBase
  3448. add.l AddressCounter(pc),a0    ;get AddressCounter
  3449. move.l d0,(a0)                ;get UnitMemPtr
  3450. move.l d0,TrackUnitMem      ;get UnitMem in TrackDiskIOStdReq-structure
  3451.  
  3452. move.l ExecBase,a6        ;get ExecBase
  3453. lea UnitMem(pc),a0        ;get UnitMemBase
  3454. add.l AddressCounter(pc),a0    ;get AddressCounter
  3455. move.l (a0),a1            ;get UnitMemPtr
  3456. lea Unit(pc),a0            ;get Unit-structure
  3457. move.l #40,d0            ;get size
  3458. jsr CopyMem(a6)            ;call subroutine
  3459.  
  3460. lea UnitMem(pc),a0        ;get UnitMemBase
  3461. add.l AddressCounter(pc),a0    ;get AddressCounter
  3462. move.l (a0),a0            ;get UnitMemPtr
  3463. add.l #20,a0            ;get UnitMsgList
  3464. move.l a0,(a0)            ;get lh_Head
  3465. move.l a0,8(a0)            ;get lh_TailPred
  3466. add.l #4,(a0)            ;get lh_Tail
  3467.  
  3468. cmp.l #0,DriveCounter        ;first floppydisk
  3469. bne BootBlockStart3        ;No, branch to BootBlockStart3
  3470.  
  3471. move.l ExecBase,a6        ;get ExecBase
  3472. move.l #MEMF_PUBLIC!MEMF_CHIP!MEMF_CLEAR!MEMF_LARGEST,d1
  3473. move.l #1000,d0            ;want 1000 bytes
  3474. jsr AllocMem(a6)        ;call subroutine
  3475. tst.l d0            ;error ?
  3476. beq BootBlockCheckEnde3        ;Yes, end the BootblockCheck !
  3477. move.l d0,MsgPortMem        ;No, get MsgPortMemPtr
  3478.  
  3479. move.l ExecBase,a6        ;get ExecBase
  3480. lea MsgPortStructure(pc),a0    ;get MsgPort-structure
  3481. move.l MsgPortMem(pc),a1    ;get MsgPortMemPtr
  3482. move.l #34,d0            ;get size
  3483. jsr CopyMem(a6)            ;call subroutine
  3484.  
  3485. move.l MsgPortMem(pc),a0    ;get MsgPortMemPtr
  3486. add.l #20,a0            ;get MsgList
  3487. move.l a0,(a0)          ;get lh_Head
  3488. move.l a0,8(a0)            ;get lh_TailPred
  3489. add.l #4,(a0)            ;get lh_Tail
  3490.  
  3491. move.l ExecBase,a6        ;get ExecBase
  3492. move.l MsgPortMem(pc),a1    ;get MsgPortMemPtr
  3493. jsr AddPort(a6)            ;call subroutine
  3494.  
  3495. BootBlockStart3:
  3496. move.l MsgPortMem(pc),d0    ;get MsgPortMemPtr
  3497. move.l d0,TrackDiskMsgPortMem    ;insert MsgPortMemPtr in TrackDiskIOStd-Req-structure
  3498. move.l ExecBase,a6        ;get ExecBase
  3499. move.l #MEMF_PUBLIC!MEMF_CHIP!MEMF_CLEAR!MEMF_LARGEST,d1
  3500. move.l #100,d0            ;need only 100 bytes
  3501. jsr AllocMem(a6)        ;call subroutine
  3502. tst.l d0            ;error ?
  3503. beq BootblockCheckEnde4        ;Yes, end BootblockCheck
  3504. lea TrackDiskIOSTDRequestMem(pc),a0;get TrackDiskIOStdReqMemBase
  3505. add.l AddressCounter(pc),a0    ;get AddressCounter
  3506. move.l d0,(a0)            ;get TrackDiskIOStd-ReqMemPtr
  3507.  
  3508. move.l ExecBase,a6        ;get ExecBase
  3509. lea TrackDiskIOSTdRequestMem(pc),a0;get TrackDiskIOStdReqMemBase
  3510. add.l AddressCounter(pc),a0    ;get AddressCounter
  3511. move.l (a0),a1            ;get TDIOStdReqMem-Ptr
  3512. lea TrackdiskIOStdRequest(pc),a0;get TDIOStdReq-structure
  3513. move.l #100,d0            ;get size
  3514. jsr CopyMem(a6)            ;call subroutine
  3515.  
  3516. move.l ExecBase,a6        ;get ExecBase
  3517. lea TrackDiskIOStdRequestMem(pc),a0;get TrackDiskIOStdReqMemBase
  3518. add.l AddressCounter(pc),a0    ;get AddressCounter
  3519. move.l (a0),a1            ;get TDIOStdReqMem-Ptr
  3520. lea TrackName(PC),a0        ;get TrackName
  3521. move.l DriveCounter(pc),d0    ;use drive unit x
  3522. move.l #0,d1            ;no flags
  3523. jsr OpenDeviceRoutine(a6)    ;call subroutine
  3524. move.b #$FE,TrackDiskFlag    ;set Control Flag
  3525. tst.l d0            ;error ?
  3526. bne BootBlockCheckEnde5        ;Yes, end BootBlockCheck !
  3527. clr.b TrackDiskFlag        ;clear TrackDiskFlag
  3528. rts                ;return from subroutine
  3529.  
  3530. ReadBootBlock:
  3531. bsr DisplayCheck        ;branch to DisplayCheck
  3532. lea TrackDiskIOStdRequestMem(pc),a0;Get TDIOStdReqMemBase
  3533. add.l AddressCounter(pc),a0    ;get AddressCounter
  3534. move.l (a0),a1            ;get TrackDiskIOStdReqMem-Ptr
  3535. move.w #02,28(a1)        ;enter read-command to TrackDiskIOStdReqMemPtr
  3536. move.l #2048,$24(a1)        ;enter 2048 bytes to TrackDiskIOStdReqMemPtr
  3537. bsr BootBlockCheck        ;branch to subroutine
  3538. lea TrackDiskIOStdRequestMem(pc),a0;get TrackDiskIOStdReqMemBase
  3539. add.l AddressCounter(pc),a0    ;get AddressCounter
  3540. move.l (a0),a1            ;get TrackDiskIOStdReqMem-Ptr
  3541. move.w #09,28(a1)        ;turn off motor
  3542. move.l #0,$24(a1)        ;turn off motor
  3543. bsr BootBlockCheck        ;branch to subroutine
  3544. bsr CheckTDError        ;branch to subroutine
  3545. bsr CheckBootMem        ;branch to subroutine
  3546. rts                ;return from subroutine
  3547.  
  3548. CheckTDError:
  3549. lea TrackDiskIOStdRequestMem(pc),a0;get TrackDiskIOStdRequestMemBase
  3550. add.l AddressCounter(pc),a0    ;get AddressCounter
  3551. move.l (a0),a1            ;get TrackDiskIORequestMem-Ptr
  3552. clr.l d1            ;clear d1
  3553. move.b $1F(a1),d1        ;get Error-flag
  3554. sub.b #20,d1            ;subtract error-flag
  3555. lea TDErrorlist(pc),a5        ;get TDErrorlist
  3556. clr.l d0            ;clear d0
  3557.  
  3558. CheckTDErrorLoop:
  3559. cmp.b d0,d1            ;is counter = error-flag ?
  3560. beq TDError            ;Yes, branch to TDError !
  3561. cmp.l #0,(a5)+            ;No, count up TDErrorlist !
  3562. add.l #1,d0            ;count up !
  3563. cmp.l #16,d0            ;more than 15 loops ?
  3564. bne CheckTDErrorLoop        ;No, continue the loop !
  3565. rts                ;return from subroutine
  3566.  
  3567. DisplayCheck:
  3568. move.b DriveCounter(pc),d0    ;get DriveCounter
  3569. add.b d0,DriveNumber        ;add DriveCounter to DriveNumber
  3570. move.l Intuibase(pc),a6        ;get Intuibase
  3571. move.l Winhandle(pc),a0        ;get Winhandle
  3572. lea CheckWindowTitle(pc),a1    ;get CheckWindowTitle-address
  3573. move.l #-1,a2            ;no new screen-title
  3574. jsr SetWindowTitles(a6)        ;call subroutine
  3575. move.b #$30,DriveNumber        ;set old DriveNumber
  3576. rts                ;return from subroutine
  3577.  
  3578. DisplayWindowTitle:
  3579. move.l Intuibase(pc),a6        ;get Intuibase
  3580. move.l Winhandle(pc),a0        ;get Winhandle
  3581. lea WindowTitle(pc),a1        ;get WindowTitle-address
  3582. move.l #-1,a2            ;no new screen-title
  3583. jsr SetWindowTitles(a6)        ;call subroutine
  3584. rts                ;return from subroutine
  3585.  
  3586.  
  3587. BootblockCheck:
  3588. move.l ExecBase,a6        ;get ExecBase
  3589. lea TrackdiskIOStdRequestMem(pc),a0;get TrackDiskIOStdReqMemBase
  3590. add.l AddressCounter(pc),a0    ;get AddressCounter
  3591. move.l (a0),a1            ;get TrackDiskIOStdReqMem-Ptr
  3592. jsr DoIORoutine(a6)        ;call subroutine
  3593.  
  3594. move.l ExecBase,a6        ;get ExecBase
  3595. lea TrackdiskIOStdRequestMem(pc),a0;get TrackDiskIOStdReqMemBase
  3596. add.l AddressCounter(pc),a0    ;get AddressCounter
  3597. move.l (a0),a1            ;get TrackDiskIOStdReqMem-Ptr
  3598. jsr WaitIO(a6)            ;call subroutine
  3599.  
  3600. move.l ExecBase,a6        ;get ExecBase
  3601. move.l MsgPortMem(pc),a0    ;get MsgPortMemPtr
  3602. jsr GetMsg(a6)            ;call subroutine
  3603. move.l d0,TrackDiskMessage    ;get TrackDiskMessage
  3604. rts                ;return from subroutine
  3605.  
  3606. WriteBootBlock:
  3607. move.l ExecBase,a6        ;get ExecBase
  3608. lea Sectorbuffer(pc),a0        ;get Sectorbufferbase
  3609. add.l AddressCounter(pc),a0    ;get AddressCounter
  3610. move.l (a0),a1            ;get Sectorbuffer-Ptr
  3611. add.l #4,a1            ;use old DOS-name
  3612. lea Bootblock(pc),a0        ;get Bootblockprg-Address
  3613. clr.l d0            ;clear d0
  3614. move.b -1(a1),d0        ;calculate new BootChecksum
  3615. sub.l d0,start            ;enter new BootCheckSum
  3616. move.l #1020,d0            ;get size
  3617. jsr CopyMem(a6)            ;call subroutine
  3618.  
  3619.  
  3620. lea TrackDiskIOStdRequestMem(pc),a0;get TrackDiskIOStdReqMemBase
  3621. add.l AddressCounter(pc),a0    ;get AddressCounter
  3622. move.l (a0),a1            ;get TrackDiskIOStdReqMemPtr
  3623. move.w #03,28(a1)        ;enter write-command
  3624. move.l #1024,$24(a1)        ;enter 1024 bytes to write
  3625. bsr BootBlockCheck        ;branch to subroutine
  3626.  
  3627. lea TrackDiskIOStdRequestMem(pc),a0;get TrackDiskIOStdReqMemBase
  3628. add.l AddressCounter(pc),a0    ;get AddressCounter
  3629. move.l (a0),a1            ;get TrackDiskIOStdReqMemPtr
  3630. move.w #04,28(a1)        ;enter update-command
  3631. bsr BootblockCheck        ;branch to subroutine
  3632.  
  3633. bsr CheckTDError        ;branch to subroutine
  3634.  
  3635. lea TrackDiskIOStdRequestMem(pc),a0;get TrackDiskIOStdReqMemBase
  3636. add.l AddressCounter(pc),a0    ;get AddressCounter
  3637. move.l (a0),a1            ;get TrackDiskIOStdReqMem-Ptr
  3638. move.w #09,28(a1)        ;turn off motor
  3639. move.l #0,$24(a1)        ;turn off motor
  3640. bsr BootBlockCheck        ;branch to subroutine
  3641. rts                ;return from subroutine
  3642.  
  3643. TDError:
  3644. lea TrackDiskIOStdRequestMem(pc),a0;get TrackDiskIOStdReqMemBase
  3645. add.l AddressCounter(pc),a0    ;get AddressCounter
  3646. move.l (a0),a1            ;get TrackDiskIOStdReqMem-Ptr
  3647. move.w #09,28(a1)        ;turn off motor
  3648. clr.b $1F(a1)            ;clear error-flag
  3649. move.l #0,$24(a1)        ;turn off motor
  3650. bsr BootBlockCheck        ;branch to subroutine
  3651.  
  3652. lea AutoRequestTextPtr(pc),a0    ;get RequestTextPtr
  3653. move.l (a5),(a0)        ;insert OutputText in RequestTextPtr    
  3654. lea GadgetTextPtr(pc),a0    ;get GadgetTextPtr
  3655. move.l #ContinueText,(a0)    ;insert OutputText in GadgetTextPtr
  3656. lea GadgetText2Ptr(pc),a0    ;get next GadgetTextPtr
  3657. move.l #ContinueText,(a0)    ;insert OutputText in next GadgetTextPtr
  3658. move.l #0,a0            
  3659. lea AutoRequestText(pc),a1    ;get RequestText-structure    
  3660. lea GadgetText(pc),a2        ;get GadgetText-structure
  3661. lea GadgetText2(pc),a3        ;get GadgetText2-structure
  3662. moveq #0,d0            ;no IDCMP-Flag
  3663. moveq #0,d1            ;no IDMCP-Flag
  3664. move.l #610,d2            ;get Width for Request
  3665. move.l #70,d3            ;get Height for Request
  3666. move.l Intuibase(pc),a6        ;get Intuibase
  3667. jsr AutoRequest(a6)        ;call subroutine
  3668. rts                ;return from subroutine
  3669.  
  3670. BootblockEnde:
  3671. move.l ExecBase,a6        ;get ExecBase
  3672. lea TrackDiskIOStdRequestMem(pc),a0;get TrackDiskIOStdReqMemBase
  3673. add.l AddressCounter(pc),a0    ;get AddressCounter
  3674. move.l (a0),a1            ;get TrackDiskIOStdReqMem-Ptr
  3675. jsr CloseDevice(a6)        ;call subroutine
  3676.  
  3677. cmp.l #0,DriveCounter        ;first floppydisk ?
  3678. bne BootblockEnde2        ;No, branch to BootblockEnde2
  3679.  
  3680. move.l ExecBase,a6        ;get ExecBase
  3681. move.l MsgPortMem(pc),a1    ;get MsgPortMemPtr
  3682. jsr RemPort(a6)            ;call subroutine
  3683.  
  3684. move.l MsgPortMem(pc),a0    ;get MsgPortMemPtr
  3685. move.b #$FF,$8(a0)        ;remove listtype
  3686. move.l #-1,$14(a0)        ;remove flag
  3687.  
  3688. move.l ExecBase,a6        ;get ExecBase
  3689. move.l MsgPortMem(pc),a1    ;get MsgPortMemPtr
  3690. move.l #1000,d0            ;get size
  3691. jsr FreeMem(a6)            ;call subroutine
  3692.  
  3693. BootBlockEnde2:
  3694. lea TrackdiskIOStdRequestMem(pc),a0;get TrackDiskIOStdReqMemBase
  3695. add.l AddressCounter(pc),a0    ;get AddressCounter
  3696. move.l (a0),a0            ;get TrackDiskIOStdReqMem-Ptr
  3697. move.b #$FF,$8(a0)        ;remove listtype
  3698. move.l #$FFFFFFFF,$14(a0)    ;remove DevicePtr
  3699. move.l #$FFFFFFFF,$18(a0)    ;remove UnitPtr
  3700. move.l ExecBase,a6        ;get ExecBase
  3701. lea TrackDiskIOStdRequestMem(pc),a0;get TrackDiskIOStdReqMem-Ptr
  3702. add.l AddressCounter(pc),a0    ;get AddressCounter
  3703. move.l (a0),a1            ;get TrackDiskIOStdReqMem-Ptr
  3704. move.l #100,d0            ;get size
  3705. jsr FreeMem(a6)            ;call subroutine
  3706.  
  3707. move.l ExecBase,a6        ;get ExecBase
  3708. lea DeviceMem(pc),a0        ;get DeviceMemBase
  3709. add.l AddressCounter(pc),a0    ;get AddressCounter
  3710. move.l (a0),a1            ;get DeviceMemPtr
  3711. move.l #100,d0            ;get size
  3712. jsr FreeMem(a6)            ;call subroutine
  3713.  
  3714. move.l ExecBase,a6        ;get ExecBase
  3715. lea UnitMem(pc),a0        ;get UnitMemBase
  3716. add.l AddressCounter(pc),a0    ;get AddressCounter
  3717. move.l (a0),a1            ;get UnitMemPtr
  3718. move.l #100,d0            ;get size
  3719. jsr FreeMem(a6)            ;call subroutine
  3720.  
  3721. cmp.l #0,DriveCounter        ;first floppydisk
  3722. bne BootBlockEnde3        ;No, branch to BootBlockEnde3
  3723. move.l ExecBase,a6        ;get ExecBase
  3724. move.l d7,d0            ;get Signalbit
  3725. jsr FreeSignal(a6)        ;call subroutine
  3726.  
  3727. BootBlockEnde3:
  3728. move.l ExecBase,a6        ;get ExecBase
  3729. lea Sectorbuffer(pc),a0     ;get SectorbufferBase
  3730. add.l AddressCounter(pc),a0    ;get AddressCounter
  3731. move.l (a0),a1            ;get SectorbufferMem-Ptr
  3732. move.l #$2048,d0        ;get size
  3733. jsr FreeMem(a6)            ;call subroutine
  3734. rts                ;return from subroutine
  3735.  
  3736. CheckBootMem:
  3737. bsr DisplayWindowTitle        ;branch to DisplayWindowTitle
  3738. move.l #185,d0            
  3739. lea BootblockVirusOffsetlist(pc),a0
  3740. lea BootblockVirusTestbytesList(pc),a1
  3741. lea BootblockVirusNameList(pc),a3
  3742. lea Sectorbuffer(pc),a4        ;get SectorbufferBase
  3743. add.l AddressCounter(pc),a4    ;get AddressCounter
  3744.  
  3745. CompareBootblockLoop:
  3746. move.l (a0)+,d1            ;get offset
  3747. add.l (a4),d1                    ;add offset to Sectorbuffer
  3748. move.l d1,a2            ;write d1 to a2
  3749. move.l (a2),d1            ;write longword from sectorbuffer to d1
  3750. cmp.l (a1)+,d1            ;is this longword = testbytes ?
  3751. beq BootblockVirus        ;Yes, branch to BootBlockVirus
  3752. cmp.l #0,(a3)+            ;count BootblockVirusNameList
  3753. sub.l #1,d0            ;count down
  3754. cmp.l #0,d0            ;Zero ?
  3755. bne CompareBootblockLoop    ;No, continue the loop !
  3756.  
  3757. cmp.l #0,BBBFBase        ;BBBFBase available ?
  3758. beq CompareBootBlockLoopEnd    ;No, branch to CompareBootBlockLoopEnd
  3759. move.l BBBFBase(pc),a6        ;get BBBFBase
  3760. lea Sectorbuffer(pc),a0        ;get SectorbufferBase
  3761. add.l AddressCounter(pc),a0    ;get AddressCounter
  3762. move.l (a0),a0            ;get SectorbufferMem-Ptr
  3763. lea status(pc),a1        ;get status
  3764. jsr CheckBoot(a6)        ;call subroutine
  3765. cmp.l #1,status            ;virus ?
  3766. beq BBBFBootblockVirus        ;Yes, branch to BBBFBootblockVirus
  3767. cmp.l #2,status            ;not bootable ?
  3768. beq NotBootAble            ;Yes, branch to NotBootAble
  3769. CompareBootBlockLoopEnd:
  3770. rts                ;return from subroutine
  3771.  
  3772. BBBFBootblockVirus:
  3773. lea Directory(pc),a3        ;get Directory-address
  3774. add.l #4,d0            ;count to BootBlockVirusText-Startaddress
  3775. move.l d0,(a3)            ;get BootBlockVirus-Text-Startaddress
  3776.  
  3777. BootblockVirus:
  3778. lea BootblockVirusName(pc),a0    ;get BootblockVirusNamebuffer
  3779. move.l #40,d0            ;get counter
  3780.  
  3781. ClearBootblockVirusNameLoop2:
  3782. move.b #00,(a0)+        ;clear the buffer
  3783. sub.l #1,d0            ;count down
  3784. cmp.l #0,d0            ;Zero ?
  3785. bne ClearBootblockVirusNameLoop2;No, continue the loop !
  3786.  
  3787. lea BootblockVirusName(pc),a0    ;get BootblockVirusNamebuffer
  3788. move.l (a3),a1            ;get VirusText-Address
  3789.  
  3790. BootblockVirusNameLoop:
  3791. move.b (a1)+,(a0)+        ;write VirusName to BootblockVirusNamebuffer
  3792. cmp.b #0,(a1)            ;Zero ?
  3793. bne BootblockVirusNameLoop    ;No, continue the loop !
  3794.  
  3795. BootRequester:
  3796. Requesterold BootReqText,Install,Continuetext2,#610,#70
  3797. cmp.l #1,d0            ;was Gadget touched ?
  3798. beq WriteBootblock        ;Yes, WriteBootblock
  3799. rts                ;return from subroutine
  3800.  
  3801. NotBootable:
  3802. Requesterold NotBootableReq,Continuetext2,Continuetext2,#610,#70
  3803. rts
  3804.  
  3805. BootblockCheckEnde:
  3806. bsr NoMemAlert            ;branch to subroutine
  3807. move.b #$FF,TrackdiskFlag    ;set TrackDiskFlag
  3808. rts                ;return from subroutine
  3809.  
  3810. BootblockCheckEnde5:
  3811. lea TrackdiskIOStdRequestMem(pc),a0;get TrackDiskIOStdReqMemBase
  3812. add.l AddressCounter(pc),a0    ;get AddressCounter
  3813. move.l (a0),a0            ;get TrackDiskIOStdReqMem-Ptr
  3814. move.b #$FF,$8(a0)        ;remove listtype
  3815. move.l #$FFFFFFFF,$14(a0)    ;remove Devicestructure
  3816. move.l #$FFFFFFFF,$18(a0)    ;remove UnitStructure
  3817. move.l ExecBase,a6        ;get ExecBase
  3818. lea TrackdiskIOStdRequestMem(pc),a0;get TrackDiskIOStdReqMemBase
  3819. add.l AddressCounter(pc),a0    ;get AddressCounter
  3820. move.l (a0),a1            ;get TrackDiskIOStdReqMem-Ptr
  3821. move.l #100,d0            ;get size
  3822. jsr FreeMem(a6)            ;call subroutine
  3823.  
  3824.  
  3825. BootblockCheckEnde4:
  3826. cmp.l #0,DriveCounter        ;first floppydisk ?
  3827. bne BootblockCheckEnde3        ;Yes, branch to BootblockCheckEnde3
  3828.  
  3829. move.l ExecBase,a6        ;get ExecBase
  3830. move.l MsgPortMem(pc),a1    ;get MsgPortMemPtr
  3831. jsr RemPort(a6)            ;call subroutine
  3832.  
  3833. move.l MsgPortMem(pc),a0    ;get MsgPortMemPtr
  3834. move.b #$FF,$8(a0)        ;remove listtype
  3835. move.l #-1,$14(a0)        ;remove flags
  3836.  
  3837. move.l ExecBase,a6        ;get ExecBase
  3838. move.l MsgPortMem(pc),a1    ;get MsgPortMemPtr
  3839. move.l #1000,d0            ;get size
  3840. jsr FreeMem(a6)            ;call subroutine
  3841.  
  3842. BootblockCheckEnde3:
  3843. move.l ExecBase,a6        ;get ExecBase
  3844. lea UnitMem(pc),a0        ;get UnitMemBase
  3845. add.l AddressCounter(pc),a0    ;get AddressCounter
  3846. move.l (a0),a1            ;get UnitMemPtr
  3847. move.l #100,d0            ;get size
  3848. jsr FreeMem(a6)            ;call subroutine
  3849.  
  3850. BootBlockCheckEnde2:
  3851. move.l ExecBase,a6        ;get ExecBase
  3852. lea DeviceMem(pc),a0        ;get DeviceMemBase
  3853. add.l AddressCounter(pc),a0    ;get AddressCounter
  3854. move.l (a0),a1            ;get DeviceMemPtr
  3855. move.l #100,d0            ;get size
  3856. jsr FreeMem(a6)            ;call subroutine
  3857.  
  3858. FreeSignalIt:
  3859. move.l ExecBase,a6        ;get ExecBase
  3860. lea Sectorbuffer(pc),a0            ;get SectorbufferBase
  3861. add.l AddressCounter(pc),a0    ;get AddressCounter
  3862. move.l (a0),a1            ;get SectorBufferMem-Ptr
  3863. move.l #$2048,d0        ;get size
  3864. jsr FreeMem(a6)            ;call subroutine
  3865.  
  3866. cmp.l #0,DriveCounter        ;first floopydisk ?
  3867. bne BootBlockCheckEnde0        ;Yes, branch to BootBlockCheckEnde0
  3868. move.l ExecBase,a6        ;get ExecBase
  3869. move.l d7,d0            ;get Signalbit
  3870. jsr FreeSignal(a6)        ;call subroutine
  3871.  
  3872. BootBlockCheckEnde0:
  3873. cmp.b #$FE,TrackDiskFlag    ;only no more drives ?
  3874. beq BootBlockCheckEnde00    ;display NO alert !
  3875. bsr NoMemAlert            ;branch to subroutine
  3876. BootBlockCheckEnde00:
  3877. move.b #$FF,TrackdiskFlag    ;set TrackDiskFlag
  3878. rts                ;return from subroutine
  3879.  
  3880. even
  3881. BootReqText:
  3882. dc.b 0,2
  3883. dc.b 0
  3884. even
  3885. dc.w 20,20
  3886. dc.l 0
  3887. dc.l BootText
  3888. dc.l 0
  3889.  
  3890. even
  3891. Install:
  3892. dc.b 0,2
  3893. dc.b 0
  3894. even
  3895. dc.w 12,4
  3896. dc.l 0
  3897. dc.l InstallText
  3898. dc.l 0
  3899.  
  3900. InstallText:
  3901. dc.b ` Install `,0
  3902.  
  3903. even
  3904. TDErrorlist:
  3905. dc.l NotSpecified
  3906. dc.l NoSecHdr
  3907. dc.l BadSecPreamble
  3908. dc.l BadSecId
  3909. dc.l BadHdrSum
  3910. dc.l BadSecSum
  3911. dc.l TooFewSecs
  3912. dc.l BadSecHdr
  3913. dc.l WriteProt
  3914. dc.l DiskChanged
  3915. dc.l SeekError
  3916. dc.l NoMem
  3917. dc.l BadUnitNum
  3918. dc.l BadDriveType
  3919. dc.l DriveInUse
  3920. dc.l PostReset
  3921.  
  3922. even
  3923. NotSpecified:
  3924. dc.b `Error not specified !`,0
  3925.  
  3926. even
  3927. NoSecHdr:
  3928. dc.b `Sector-head not found !`,0
  3929.  
  3930. even
  3931. BadSecPreamble:
  3932. dc.b `Error in sector-preamble !`,0
  3933.  
  3934. even
  3935. BadSecID:
  3936. dc.b `Error in sector-ID !`,0
  3937.  
  3938. even
  3939. BadHdrSum:
  3940. dc.b `CheckSum-error in header !`,0
  3941.  
  3942. even
  3943. BadSecSum:
  3944. dc.b `CheckSum-error in sector !`,0
  3945.  
  3946. even
  3947. TooFewSecs:
  3948. dc.b `Not enough sectors on track !`,0
  3949.  
  3950. even
  3951. BadsecHdr:
  3952. dc.b `Sector-head unreadable !`,0
  3953.  
  3954. even
  3955. WriteProt:
  3956. dc.b `Disk write-protected !`,0
  3957.  
  3958. even
  3959. DiskChanged:
  3960. dc.b `No disk in drive !`,0
  3961.  
  3962. even
  3963. SeekError:
  3964. dc.b `ReadHeader-position wrong !`,0
  3965.  
  3966. even
  3967. NoMem:
  3968. dc.b `Not enough memory !`,0
  3969.  
  3970. even
  3971. BadUnitNum:
  3972. dc.b `Called floppydrive not connected !`,0
  3973.  
  3974. even
  3975. BadDriveType:
  3976. dc.b `wrong floppydrive !`,0
  3977.  
  3978. even
  3979. DriveInUse:
  3980. dc.b `Drive already will be used !`,0
  3981.  
  3982. even
  3983. PostReset:
  3984. dc.b `No entry after postreset !`,0
  3985.  
  3986. even
  3987. MsgPortStructure:        
  3988. dc.l 0                
  3989. dc.l 0                
  3990. dc.b 4                
  3991. dc.b 0                
  3992. dc.l PortName                          
  3993. dc.b 0
  3994. Sigbit:                
  3995. dc.b 0                   
  3996. AntiCicloTask:
  3997. dc.l 0        
  3998. dc.l 0
  3999. dc.l 0
  4000. dc.l 0
  4001. dc.b 5
  4002. dc.b 0
  4003.  
  4004. even
  4005. TrackdiskIOStdRequest:        ;IOStdRequest-structure
  4006. dc.l 0                ;Ptr of successor
  4007. dc.l 0                ;Ptr of predecessor
  4008. dc.b 6                ;messagetype
  4009. dc.b 0                ;priority
  4010. dc.l MessageName                ;Ptr of Messagename
  4011. TrackDiskMsgPortMem:
  4012. dc.l 0              ;Ptr of MsgPort
  4013. dc.w 56                ;messagelength
  4014. TrackDeviceMem:
  4015. dc.l 0                ;Ptr to Device-structure
  4016. TrackUnitMem:              
  4017. dc.l 0                      ;Ptr to Unit-structure
  4018. dc.w 2                ;Command
  4019. dc.b 0                ;Flags
  4020. dc.b 0                ;Errorbyte
  4021. dc.l 0                ;Actualbyte
  4022. dc.l 2048            ;Number of Bytes
  4023. TrackSecbuffer:
  4024. dc.l 0                     ;Buffer-address
  4025. dc.l 0                ;Sector-Nr.
  4026. dc.l 0                ;DiskChangeCount
  4027. dc.l 0                ;SecLabelBuffer
  4028.  
  4029. even
  4030. Device:
  4031. dc.l 0
  4032. dc.l 0
  4033. dc.b 3
  4034. dc.b 0
  4035. dc.l TrackName
  4036. dc.b 0
  4037. dc.b 0
  4038. dc.w 0
  4039. dc.w 0
  4040. dc.w 0
  4041. dc.w 0
  4042. dc.l TrackName
  4043. dc.l 0
  4044. dc.w 0
  4045.  
  4046. even
  4047. Unit:
  4048. dc.l 0
  4049. dc.l 0
  4050. dc.b 4
  4051. dc.b 0
  4052. dc.l 0
  4053. dc.b 0
  4054. dc.b 0
  4055. dc.l 0
  4056. dc.l 0
  4057. dc.l 0
  4058. dc.l 0
  4059. dc.b 5
  4060. dc.b 0
  4061. dc.b 0
  4062. dc.b 0
  4063. dc.w 0
  4064.  
  4065. even
  4066. CheckWindowTitle:
  4067. dc.b `checking floppydrive DF` 
  4068. DriveNumber: dc.b `0: !!!`,0
  4069.  
  4070. even
  4071. MsgPortMem:
  4072. dc.l 0
  4073.  
  4074. TrackdiskIOStdRequestMem:
  4075. dc.l 0
  4076. dc.l 0
  4077. dc.l 0
  4078. dc.l 0
  4079.  
  4080. DeviceMem:
  4081. dc.l 0
  4082. dc.l 0
  4083. dc.l 0
  4084. dc.l 0
  4085.  
  4086. UnitMem:
  4087. dc.l 0
  4088. dc.l 0
  4089. dc.l 0
  4090. dc.l 0
  4091.  
  4092. TrackDiskMessage:
  4093. dc.l 0
  4094.  
  4095. Sectorbuffer:
  4096. dc.l 0
  4097. dc.l 0
  4098. dc.l 0
  4099. dc.l 0
  4100.  
  4101. status:
  4102. dc.l 0
  4103.  
  4104. TrackdiskFlag:
  4105. dc.b 0
  4106.  
  4107. even
  4108. OpenDriveCount:
  4109. dc.l 0
  4110.  
  4111. even
  4112. DriveCounter:
  4113. dc.l 0
  4114.  
  4115. even
  4116. DriveLoopCounter:
  4117. dc.l 0
  4118.  
  4119. even
  4120. AddressCounter:
  4121. dc.l 0
  4122.  
  4123. even
  4124. MessageName:
  4125. dc.b `AntiCicloVir.message`,0
  4126.  
  4127. even
  4128. PortName:
  4129. dc.b `AntiCicloVir.port`,0
  4130.  
  4131. even
  4132. BootText:
  4133. dc.b `VIRUS in Bootsectors:  `
  4134. Bootblockvirusname: blk.b 40,0
  4135.  
  4136. NotBootableReq:
  4137. dc.b 0,2
  4138. dc.b 0
  4139. even
  4140. dc.w 20,20
  4141. dc.l 0
  4142. dc.l NotBootAbleText
  4143. dc.l 0
  4144.  
  4145. even
  4146. NotBootableText:
  4147. dc.b `Disk is not bootable !!!`,0
  4148.  
  4149. even
  4150. BootblockvirusNameList:
  4151. dc.l The16BitCrewText
  4152. dc.l The2001Text
  4153. dc.l AEKText
  4154. dc.l AHCText
  4155. dc.l AIDSText
  4156. dc.l AIDS2Text
  4157. dc.l AlienNewBeatText
  4158. dc.l AmigaFreakText
  4159. dc.l AmigaMasterText
  4160. dc.l AngelText
  4161. dc.l ASSText
  4162. dc.l ASVText
  4163. dc.l AsylantText
  4164. dc.l AustralianParasiteText
  4165. dc.l BadBytesText
  4166. dc.l BamigaSectorOneText
  4167. dc.l BBProtText
  4168. dc.l BigBossText
  4169. dc.l BlackflashText
  4170. dc.l BladeRunnersText
  4171. dc.l BLFText
  4172. dc.l BlizzProV31Text
  4173. dc.l BlizzProV33Text
  4174. dc.l BlowJobText
  4175. dc.l BootXText
  4176. dc.l ButonicText
  4177. dc.l ByteBanditText
  4178. dc.l ByteBanditPlusText
  4179. dc.l ByteBandit2Text
  4180. dc.l ByteBanditturboText
  4181. dc.l ByteVoyagerText
  4182. dc.l ByteVoyagerIIText
  4183. dc.l ByteWarriorText
  4184. dc.l CascadeText
  4185. dc.l CCCPText
  4186. dc.l ClaasAbrahamText
  4187. dc.l ClonkText
  4188. dc.l CobraText
  4189. dc.l CodersNightmareText
  4190. dc.l CopyLockText
  4191. dc.l CrackerExterminatorText
  4192. dc.l DAGText
  4193. dc.l DAT89Text
  4194. dc.l DatacrimeText
  4195. dc.l DestructorText
  4196. dc.l DetlefText
  4197. dc.l DigitalEmotionsText
  4198. dc.l DisgustText
  4199. dc.l DiskDoktorsText
  4200. dc.l DISKFurunkelText
  4201. dc.l DiskGuardText
  4202. dc.l DiskHerpesText
  4203. dc.l DiskTerminatorText
  4204. dc.l DivinaExterminatorText
  4205. dc.l DottyText
  4206. dc.l DUMDUMText
  4207. dc.l ElectroVisionText
  4208. dc.l EuropeanText
  4209. dc.l ExcrementText
  4210. dc.l ExecutorsText
  4211. dc.l ExtremeText
  4212. dc.l FASTText
  4213. dc.l FastEddieText
  4214. dc.l FICAText
  4215. dc.l ForpibText
  4216. dc.l FrityText
  4217. dc.l fuckdeviceText
  4218. dc.l GadaffiText
  4219. dc.l GermanyText
  4220. dc.l GlasnostText
  4221. dc.l GraffitiText
  4222. dc.l GremlinText
  4223. dc.l GuardiansBootAidsText
  4224. dc.l GXTeamText
  4225. dc.l GyrosText
  4226. dc.l HaukeText
  4227. dc.l HCSText
  4228. dc.l HCSIIText
  4229. dc.l HighlanderText
  4230. dc.l HillyText
  4231. dc.l HODENText
  4232. dc.l IceText
  4233. dc.l IncognitoText
  4234. dc.l IndianaJonesText
  4235. dc.l InfectorText
  4236. dc.l InfluenzaText
  4237. dc.l IngerIQText
  4238. dc.l IngoText
  4239. dc.l JITRText
  4240. dc.l JoshuaText
  4241. dc.l JulieText
  4242. dc.l KaukiText
  4243. dc.l KefrensText
  4244. dc.l KilledText
  4245. dc.l LADSText
  4246. dc.l LameBlameText
  4247. dc.l LamerExterminatoroldText
  4248. dc.l LamerExterminatornewText
  4249. dc.l LamerExterminatorIText
  4250. dc.l LamerExterminatorIIText
  4251. dc.l LamerExterminatorIIIText
  4252. dc.l LamerExterminatorIVText
  4253. dc.l LamerExterminatorVText
  4254. dc.l LamerExterminatorVIText
  4255. dc.l LoverboySexmachineText
  4256. dc.l LSDText
  4257. dc.l MADText
  4258. dc.l MADIIText
  4259. dc.l MallanderText
  4260. dc.l MEXXText
  4261. dc.l MGM89Text
  4262. dc.l MICROSYSTEMSText
  4263. dc.l MOSHText
  4264. dc.l MOSH2Text
  4265. dc.l MutilatorText
  4266. dc.l NastyNastyText
  4267. dc.l NorthStarText
  4268. dc.l NorthStarIIText
  4269. dc.l ObeliskText
  4270. dc.l Obelisk2Text
  4271. dc.l OPAPAText
  4272. dc.l OverkillText
  4273. dc.l PARATAXIText
  4274. dc.l PARATAXIIText
  4275. dc.l PARATAXIIIText
  4276. dc.l PayDayText
  4277. dc.l PentagonSlayerText
  4278. dc.l PentagonSlayer2Text
  4279. dc.l PentagonSlayer3Text
  4280. dc.l PlastiqueText
  4281. dc.l REPText
  4282. dc.l RevengeBootloaderText
  4283. dc.l REVENGEText
  4284. dc.l SachsenText
  4285. dc.l SADDAMHUSSEINText
  4286. dc.l SaoPauloText
  4287. dc.l SATANText
  4288. dc.l SCAText
  4289. dc.l ScarfaceText
  4290. dc.l SendarionText
  4291. dc.l SherlockText
  4292. dc.l ShitText
  4293. dc.l SSText
  4294. dc.l SSIIText
  4295. dc.l SuicideMachineText
  4296. dc.l SuperboyText
  4297. dc.l SupplyTeamText
  4298. dc.l SystemZV30Text
  4299. dc.l SystemZV40Text
  4300. dc.l SystemZV50Text
  4301. dc.l SystemZV51Text
  4302. dc.l SystemZV53Text
  4303. dc.l SystemZV54Text
  4304. dc.l SystemZV61Text
  4305. dc.l SystemZV64Text
  4306. dc.l SystemZV65Text
  4307. dc.l TargetText
  4308. dc.l TelstarText
  4309. dc.l TermigatorText
  4310. dc.l TFCRevengeText
  4311. dc.l TimeBombText
  4312. dc.l TNKText
  4313. dc.l TomatesGentechnic10Text
  4314. dc.l TomatesGentechnic20Text
  4315. dc.l TURKText
  4316. dc.l UltrafoxText
  4317. dc.l UKLamerStyleText
  4318. dc.l USSR492Text
  4319. dc.l VCCofTNTText
  4320. dc.l VIPHSText
  4321. dc.l VirusConstructionSetBootblockText
  4322. dc.l VirusSlayerText
  4323. dc.l VirusV1Text
  4324. dc.l WAFTText
  4325. dc.l WahnfriedText
  4326. dc.l WARHAWKText
  4327. dc.l WarsawAvengerText
  4328. dc.l ZACCESSV10Text
  4329. dc.l ZACCESSV20Text
  4330. dc.l ZACCESSV30Text
  4331. dc.l ZenkerText
  4332. dc.l ZESTText
  4333. dc.l ZLXText
  4334. dc.l ZombiText
  4335.  
  4336. even
  4337. BootblockvirusTestbytesList:
  4338. dc.l `Crew`
  4339. dc.l `0012`
  4340. dc.l ` AEK`
  4341. dc.l `A.H.`
  4342. dc.l `HIV!`
  4343. dc.l ` Ken`
  4344. dc.l `ALIE`
  4345. dc.l `AMIG`
  4346. dc.l `Mast`
  4347. dc.l $4EAEFF3A
  4348. dc.l ` PRO`
  4349. dc.l `SV!A`
  4350. dc.l `ASYL`
  4351. dc.l `Aust`
  4352. dc.l `BOUT`
  4353. dc.l `BS1!`
  4354. dc.l `B-Pr`
  4355. dc.l `_BOS`
  4356. dc.l `blac`
  4357. dc.l `lade`
  4358. dc.l `dos.`
  4359. dc.l $332E3100
  4360. dc.l $332E3300
  4361. dc.l `Allo`
  4362. dc.l `Viru`
  4363. dc.l `BAHA`
  4364. dc.l `Band`
  4365. dc.l `NqNq`
  4366. dc.l `os.l`
  4367. dc.l `trac`
  4368. dc.l $61000336
  4369. dc.l $600002E6
  4370. dc.l `DASA`
  4371. dc.l `Casc`
  4372. dc.l `CCCP`
  4373. dc.l $B18536B7
  4374. dc.l `CLON`
  4375. dc.l ` COB`
  4376. dc.l `CODE`
  4377. dc.l $0007F000
  4378. dc.l `CRAC`
  4379. dc.l ` DAG`
  4380. dc.l `T '8`
  4381. dc.l `DATA`
  4382. dc.l `estr`
  4383. dc.l $41FA001A
  4384. dc.l `EMOT`
  4385. dc.l `Viru`
  4386. dc.l ` Dis`
  4387. dc.l `DISK`
  4388. dc.l `DISK`
  4389. dc.l ` H e`
  4390. dc.l `DISK`
  4391. dc.l `dos.`
  4392. dc.l `Dott`
  4393. dc.l `MDUM`
  4394. dc.l `ELEC`
  4395. dc.l `Euro`
  4396. dc.l `EXCR`
  4397. dc.l `XECU`
  4398. dc.l `XTRE`
  4399. dc.l $0007F000
  4400. dc.l $6000FC38
  4401. dc.l `F.I.`
  4402. dc.l `FORP`
  4403. dc.l `rity`
  4404. dc.l `fuck`
  4405. dc.l `GADA`
  4406. dc.l `Germ`
  4407. dc.l `Glas`
  4408. dc.l `fiti`
  4409. dc.l `grap`
  4410. dc.l `-aid`
  4411. dc.l `intu`
  4412. dc.l `GYRO`
  4413. dc.l `Hauk`
  4414. dc.l `H.C.`
  4415. dc.l `H.C.`
  4416. dc.l `HIGH`
  4417. dc.l $0007FF00
  4418. dc.l `HODE`
  4419. dc.l `INC!`
  4420. dc.l $2C790000
  4421. dc.l `iana`
  4422. dc.l $6000FC38
  4423. dc.l `FUCK`
  4424. dc.l `nger`
  4425. dc.l `INGO`
  4426. dc.l `JITR`
  4427. dc.l $00BFE001
  4428. dc.l $E0014E75
  4429. dc.l `dos.`
  4430. dc.l `efre`
  4431. dc.l `Kill`
  4432. dc.l `LADS`
  4433. dc.l $6100FFDE
  4434. dc.l $ABCD0000
  4435. dc.l $ABCD0000
  4436. dc.l $FEDC0000
  4437. dc.l $ABCD0000
  4438. dc.l $ABCD0000
  4439. dc.l $ABCD0000
  4440. dc.l $ABCD0000
  4441. dc.l $ABCD0000
  4442. dc.l ` Sex`
  4443. dc.l `LSD!`
  4444. dc.l `Infe`
  4445. dc.l `cker`
  4446. dc.l `DERK`
  4447. dc.l `MEXX`
  4448. dc.l `MGM8`
  4449. dc.l `MICR`
  4450. dc.l `MOSH`
  4451. dc.l `MOSH`
  4452. dc.l `dos.`
  4453. dc.l `Nast`
  4454. dc.l `Nort`
  4455. dc.l `Nort`
  4456. dc.l `GURU`
  4457. dc.l ` OBE`
  4458. dc.l ` OPA`
  4459. dc.l $4BF90007
  4460. dc.l `TAX `
  4461. dc.l `ATAX`
  4462. dc.l `ATAX`
  4463. dc.l `PayD`
  4464. dc.l `enta`
  4465. dc.l `Circ`
  4466. dc.l `enta`
  4467. dc.l ` P L`
  4468. dc.l `REP!`
  4469. dc.l `Reve`
  4470. dc.l `Reve`
  4471. dc.l $00078400
  4472. dc.l `2000`
  4473. dc.l `PAUL`
  4474. dc.l `SATA`
  4475. dc.l `SCA!`
  4476. dc.l `SCAR`
  4477. dc.l `Send`
  4478. dc.l `ORSI`
  4479. dc.l $6100000A
  4480. dc.l `!SS!`
  4481. dc.l `HEIL`
  4482. dc.l $2C790000
  4483. dc.l `Supe`
  4484. dc.l ` Sup`
  4485. dc.l `3.0 `
  4486. dc.l `4.0 `
  4487. dc.l `5.0 `
  4488. dc.l `5.1 `
  4489. dc.l `V5.3`
  4490. dc.l `V5.4`
  4491. dc.l `V6.1`
  4492. dc.l `V6.4`
  4493. dc.l `V6.5`
  4494. dc.l $43524E00
  4495. dc.l `6.0 `
  4496. dc.l `intu`
  4497. dc.l ` 199`
  4498. dc.l `IME `
  4499. dc.l `TNK!`
  4500. dc.l `OMAT`
  4501. dc.l `Toma`
  4502. dc.l `TURK`
  4503. dc.l $4EF900FC
  4504. dc.l $61000338
  4505. dc.l `Sent`
  4506. dc.l `grap`
  4507. dc.l `VIPH`
  4508. dc.l $00BFE001
  4509. dc.l `VIRU`
  4510. dc.l `sind`
  4511. dc.l $2C780004
  4512. dc.l `AHNF`
  4513. dc.l `WARH`
  4514. dc.l `Wars`
  4515. dc.l `ZACC`
  4516. dc.l `ZACC`
  4517. dc.l `ACCE`
  4518. dc.l `ZENK`
  4519. dc.l `Z.E.`
  4520. dc.l `ZLX!`
  4521. dc.l $075A6F6D
  4522.  
  4523. even
  4524. BootblockvirusOffsetList:
  4525. dc.l $000001E0
  4526. dc.l $000003F0
  4527. dc.l $000003D0
  4528. dc.l $000002FC
  4529. dc.l $000003F0
  4530. dc.l $000002D0
  4531. dc.l $00000240
  4532. dc.l $0000001E
  4533. dc.l $0000037A
  4534. dc.l $00000054
  4535. dc.l $00000344
  4536. dc.l $000002F0
  4537. dc.l $00000330
  4538. dc.l $0000036C
  4539. dc.l $000003A0
  4540. dc.l $000003F0
  4541. dc.l $00000338
  4542. dc.l $000003F0
  4543. dc.l $00000010
  4544. dc.l $00000330
  4545. dc.l $0000030E
  4546. dc.l $0000002A
  4547. dc.l $0000002A
  4548. dc.l $0000002A
  4549. dc.l $0000028E
  4550. dc.l $0000032C
  4551. dc.l $00000020
  4552. dc.l $000002A8
  4553. dc.l $000003C2
  4554. dc.l $00000320
  4555. dc.l $00000010
  4556. dc.l $0000000C
  4557. dc.l $000000C0
  4558. dc.l $000003E2
  4559. dc.l $00000054
  4560. dc.l $00000004
  4561. dc.l $000003B8
  4562. dc.l $00000306
  4563. dc.l $0000005A
  4564. dc.l $00000018
  4565. dc.l $00000014
  4566. dc.l $000003BA
  4567. dc.l $000002C0
  4568. dc.l $000001C6
  4569. dc.l $000001F4
  4570. dc.l $00000010
  4571. dc.l $00000280
  4572. dc.l $000001B8
  4573. dc.l $000003E8
  4574. dc.l $000003B2
  4575. dc.l $000002F4
  4576. dc.l $00000390
  4577. dc.l $000003C6
  4578. dc.l $00000096
  4579. dc.l $00000018
  4580. dc.l $00000010
  4581. dc.l $00000010
  4582. dc.l $00000010
  4583. dc.l $00000054
  4584. dc.l $00000348
  4585. dc.l $00000274
  4586. dc.l $00000044
  4587. dc.l $000003F8
  4588. dc.l $000003F2
  4589. dc.l $0000001A
  4590. dc.l $00000018
  4591. dc.l $000002DA
  4592. dc.l $00000040
  4593. dc.l $00000010
  4594. dc.l $00000730
  4595. dc.l $00000390
  4596. dc.l $00000360
  4597. dc.l $00000394
  4598. dc.l $000001E0
  4599. dc.l $0000023E
  4600. dc.l $00000010
  4601. dc.l $00000328
  4602. dc.l $0000034E
  4603. dc.l $0000025C
  4604. dc.l $0000009C
  4605. dc.l $000002D4
  4606. dc.l $000003F0
  4607. dc.l $00000120
  4608. dc.l $00000320
  4609. dc.l $000003F8
  4610. dc.l $00000066
  4611. dc.l $00000014
  4612. dc.l $00000008
  4613. dc.l $00000008
  4614. dc.l $000001F4
  4615. dc.l $00000334
  4616. dc.l $00000298
  4617. dc.l $000003AC
  4618. dc.l $00000264
  4619. dc.l $00000008
  4620. dc.l $00000058
  4621. dc.l $000003A6
  4622. dc.l $00000396
  4623. dc.l $00000342
  4624. dc.l $00000392
  4625. dc.l $000003F4
  4626. dc.l $000003AE
  4627. dc.l $000003AA
  4628. dc.l $00000396
  4629. dc.l $000001E0
  4630. dc.l $000003F0
  4631. dc.l $00000010
  4632. dc.l $000000A0
  4633. dc.l $00000008
  4634. dc.l $000003F0
  4635. dc.l $00000282
  4636. dc.l $000003F4
  4637. dc.l $00000016
  4638. dc.l $00000016
  4639. dc.l $000002A0
  4640. dc.l $000001D6
  4641. dc.l $00000010
  4642. dc.l $00000012
  4643. dc.l $00000038
  4644. dc.l $00000370
  4645. dc.l $00000368
  4646. dc.l $00000014
  4647. dc.l $000003F0
  4648. dc.l $000003B0
  4649. dc.l $00000220
  4650. dc.l $00000010
  4651. dc.l $00000286
  4652. dc.l $00000370
  4653. dc.l $000002DA
  4654. dc.l $00000210
  4655. dc.l $000003F0
  4656. dc.l $00000010
  4657. dc.l $000003E2
  4658. dc.l $00000038
  4659. dc.l $00000012
  4660. dc.l $000002F0
  4661. dc.l $00000280
  4662. dc.l $000003F0
  4663. dc.l $00000308
  4664. dc.l $000003E2
  4665. dc.l $000002F6
  4666. dc.l $00000010
  4667. dc.l $00000012
  4668. dc.l $0000001A
  4669. dc.l $0000032C
  4670. dc.l $000002E2
  4671. dc.l $00000324
  4672. dc.l $0000002C
  4673. dc.l $0000002C
  4674. dc.l $0000002C
  4675. dc.l $0000002C
  4676. dc.l $0000002A
  4677. dc.l $0000002A
  4678. dc.l $0000002A
  4679. dc.l $0000002A
  4680. dc.l $0000002A
  4681. dc.l $0000019C
  4682. dc.l $00000024
  4683. dc.l $000003EC
  4684. dc.l $0000002C
  4685. dc.l $00000342
  4686. dc.l $000003F0
  4687. dc.l $00000182
  4688. dc.l $00000040
  4689. dc.l $00000066
  4690. dc.l $00000036
  4691. dc.l $00000368
  4692. dc.l $00000054
  4693. dc.l $00000168
  4694. dc.l $00000022
  4695. dc.l $00000146
  4696. dc.l $00000010
  4697. dc.l $00000322
  4698. dc.l $00000050
  4699. dc.l $00000312
  4700. dc.l $00000366
  4701. dc.l $00000386
  4702. dc.l $000001D6
  4703. dc.l $00000016
  4704. dc.l $0000027A
  4705. dc.l $00000252
  4706. dc.l $00000332
  4707. dc.l $000003F0
  4708. dc.l $00000184
  4709.  
  4710. CPUCrashDummy:
  4711. dc.l $00000000
  4712.  
  4713. even
  4714. BootBlock:
  4715.     start:    
  4716.     dc.l    $4B75D060
  4717.     dc.l    880
  4718. main:    lea    dosname2(PC),a1
  4719.     jsr    -96(a6)
  4720.     tst.l    d0
  4721.     beq.S    error
  4722.     move.l    d0,a0
  4723.     move.l    $16(a0),a0
  4724.     moveq    #0,d0
  4725. halt:    rts
  4726. error:    moveq    #-1,d0
  4727.     bra.S    halt
  4728. dosname2:    dc.b    'dos.library',0
  4729.     
  4730. dc.b `Disk installed by AntiCicloVir V2.4`,0
  4731. dc.b `Send new viruses to Matthias Gutt * Kantstr. 16 `,0
  4732. dc.b `* 21335 Lueneburg * Germany`,0
  4733. blk.b 900,0
  4734.  
  4735. even
  4736. VirusCheck:
  4737. move.l DiskValMem(pc),a5    ;get DiskValMemPtr
  4738. move.l #SADDAM,d4        ;get pathname
  4739. move.l Dosbase(pc),a6        ;get DosBase
  4740. move.l #SADDAM,d1        ;get filename
  4741. move.l #1005,d2            ;use the mode old
  4742. jsr Open(a6)            ;call subroutine
  4743.  
  4744. cmp.l #0,d0            ;Error ?
  4745. beq VirusCheckEnde        ;Yes, branch to VirusCheckEnde
  4746. move.l d0,DiskValHandle        ;No, get DiskValHandle
  4747.  
  4748. move.l Dosbase(pc),a6        ;get DosBase
  4749. move.l DiskValHandle(pc),d1    ;get DiskValHandle
  4750. move.l a5,d2            ;get filebuffer
  4751. move.l #1848,d3            ;get size
  4752. jsr Read(a6)            ;call subroutine
  4753.  
  4754. move.l Dosbase(pc),a6        ;get DosBase
  4755. move.l DiskValHandle(pc),d1    ;get DiskValHandle
  4756. jsr Close(a6)            ;call subroutine
  4757.  
  4758. cmp.l #"BitM",$00000702(a5)    ;SADDAM-Virus ?
  4759. beq SADDAMRequest        ;Yes !
  4760. cmp.l #$60040000,$00000024(a5)    ;RoLE-Virus ?
  4761. beq ReturnRequest        ;Yes !
  4762. cmp.l #"trac",$000006C0(a5)    ;DiskVal1234-Virus ?
  4763. beq DiskVal1234Request        ;Yes !
  4764.  
  4765. VirusCheckEnde:
  4766. clr.l DriveLoopCounter        ;clear DriveLoopCounter
  4767. clr.l DriveCounter        ;clear DriveCounter
  4768. clr.l AddressCounter        ;clear AddressCounter
  4769.  
  4770. DriveLoop:
  4771. bsr ReadBootblock        ;branch to subroutine
  4772. add.l #1,DriveLoopCounter    ;count up
  4773. add.l #1,DriveCounter        ;count up
  4774. add.l #4,AddressCounter        ;count up
  4775. move.l DriveLoopCounter,d0    ;get DriveLoopCounter
  4776. cmp.l OpenDriveCount,d0        ;all floppydisks read ?
  4777. bne DriveLoop            ;No, continue the loop !
  4778.  
  4779. DriveLoopEnd:
  4780. sub.l #4,AddressCounter        ;correct AddressCounter
  4781. sub.l #1,DriveCounter        ;correct DriveCounter
  4782.  
  4783. bra IntuiWait            ;branch to IntuiWait
  4784.  
  4785.  
  4786. SADDAMRequest:
  4787. Requester #SADDAMReq,#ContinueText,#ContinueText,#610,#70
  4788. bsr KillFileVirus2        ;branch to subroutine
  4789. bra VirusCheckEnde        ;end VirusCheck
  4790.  
  4791. ReturnRequest:
  4792. Requester #ReturnReq,#ContinueText,#ContinueText,#610,#70
  4793. move.l #SADDAM,d4        ;get pathname
  4794. bsr KillFileVirus3        ;branch to subroutine
  4795. bra VirusCheckEnde        ;end VirusCheck
  4796.  
  4797. DiskVal1234Request:
  4798. Requester #DiskVal1234Req,#ContinueText,#ContinueText,#610,#70
  4799. bsr KillFileVirus2        ;branch to subroutine
  4800. bra VirusCheckEnde        ;end VirusCheck
  4801.  
  4802. Hochofen:
  4803. lea HochofenText(pc),a0        ;get HochofenTextaddress
  4804. move.l a0,(a3)            
  4805. bra AMIGAMemoryVirus        ;branch to subroutine
  4806.  
  4807. ModemChecker:
  4808. lea ModemCheckerText(pc),a0    ;get ModemCheckerTextaddress
  4809. move.l a0,(a3)
  4810. bra AMIGAMemoryVirus        ;branch to subroutine
  4811.  
  4812. even
  4813. SADDAMReq:
  4814. dc.b `Disk-Validator: SADDAM Virus !!!`,0
  4815.  
  4816. even
  4817. ReturnReq:
  4818. dc.b `Disk-Validator: Return of the Lamer Exterminator virus !!!`,0
  4819.  
  4820. even
  4821. DiskVal1234Req:
  4822. dc.b `Disk-Validator: DiskVal1234 virus !!!`,0
  4823.  
  4824. DiskValHandle:
  4825. dc.l 0
  4826.  
  4827. DiskValMem:
  4828. dc.l 0
  4829.  
  4830. even
  4831. SADDAM:
  4832. dc.b `:l/Disk-Validator`,0
  4833.  
  4834.  
  4835. AMIGAMemoryVirus:
  4836. move.l Intuibase(pc),a6        ;get Intuibase
  4837. lea NewWindow(pc),a0        ;get NewWindow-structure-address
  4838. jsr OpenWindow(a6)        ;call subroutine
  4839. move.l d0,Winhandle        ;get Winhandle
  4840.  
  4841. move.l #40,d0            ;get counter
  4842. lea VirusName(pc),a0        ;get VirusNamebuffer
  4843.  
  4844. ClearVirusNameLoop:
  4845. move.b #00,(a0)+        ;clear the buffer
  4846. sub.l #1,d0            ;count down
  4847. cmp.l #0,d0            ;Zero ?
  4848. bne ClearVirusNameLoop        ;No, continue the loop !
  4849.  
  4850. lea VirusName(pc),a0        ;get VirusNameBuffer
  4851. move.l (a3),a1            ;get VirusNameText-Address
  4852.  
  4853. AMIGAMemoryVirusNameLoop:
  4854. move.b (a1)+,(a0)+        ;write VirusNameText to VirusNameBuffer
  4855. cmp.b #0,(a1)            ;Zero ?
  4856. bne AMIGAMemoryVirusNameLoop    ;No, continue the loop !
  4857.  
  4858. AMIGAMemoryVirusRequest:
  4859. Requester #MemoryText,#ContinueText,#ContinueText,#610,#70
  4860.  
  4861. move.l Winhandle(pc),a0        ;get Winhandle
  4862. move.l Intuibase(pc),a6        ;get Intuibase
  4863. jsr CloseWindow(a6)        ;call subroutine
  4864. bra KillMem            ;branch to subroutine
  4865.  
  4866. even
  4867. MemoryText:
  4868. dc.b `VIRUS IS STILL in memory: `
  4869. Virusname: blk.b 40,0
  4870.  
  4871. even
  4872. VirusNameList:
  4873. The16BitCrewText:
  4874. dc.b `16 Bit Crew`,0
  4875.  
  4876. even
  4877. The2001Text:
  4878. dc.b `2001`,0
  4879.  
  4880. even
  4881. AEKText:
  4882. dc.b `AEK`,0
  4883.  
  4884. even
  4885. AHCText:
  4886. dc.b `A.H.C.`,0
  4887.  
  4888. even
  4889. AIDSText:
  4890. dc.b `AIDS (SCA)`,0
  4891.  
  4892. even
  4893. AIDS2Text:
  4894. dc.b `AIDS (VKill)`,0
  4895.  
  4896. even
  4897. AlienNewBeatText:
  4898. dc.b `Alien New Beat V1.0`,0
  4899.  
  4900. even
  4901. AmigaFreakText:
  4902. dc.b `AMIGA Freak`,0
  4903.  
  4904. even
  4905. AmigaKnightText:
  4906. dc.b `AMIGA Knight`,0
  4907.  
  4908. even
  4909. AmigaMasterText:
  4910. dc.b `AMIGA Master`,0
  4911.  
  4912. even
  4913. AngelText:
  4914. dc.b `Angel`,0
  4915.  
  4916. even
  4917. AntiChristText:
  4918. dc.b `AntiChrist`,0
  4919.  
  4920. even
  4921. AntiChristTextText:
  4922. dc.b `AntiChrist-Text`,0
  4923.  
  4924. even
  4925. ASSText:
  4926. dc.b `ASS Virusprotector V1.0`,0
  4927.  
  4928. even
  4929. ASVText:
  4930. dc.b `ASV V0.000123`,0
  4931.  
  4932. even
  4933. AsylantText:
  4934. dc.b `Asylant`,0
  4935.  
  4936. even
  4937. AustralianParasiteText:
  4938. dc.b `Australian Parasite`,0
  4939.  
  4940. even
  4941. BadBytesText:
  4942. dc.b `Bad Bytes`,0
  4943.  
  4944. even
  4945. BamigaSectorOneText:
  4946. dc.b `Bamiga Sector One`,0
  4947.  
  4948. even
  4949. BBProtText:
  4950. dc.b `BB-Prot`,0
  4951.  
  4952. even
  4953. BeethovenText:
  4954. dc.b `Beethoven`,0
  4955.  
  4956. even
  4957. BestialDevastationText:
  4958. dc.b `Bestial Devastation`,0
  4959.  
  4960. even
  4961. BGS9Text:
  4962. dc.b `BGS 9`,0
  4963.  
  4964. even
  4965. BGS9IIText:
  4966. dc.b `BGS 9 II`,0
  4967.  
  4968. even
  4969. BigBossText:
  4970. dc.b `Big Boss`,0
  4971.  
  4972. even
  4973. BlackflashText:
  4974. dc.b `Blackflash V2.0`,0
  4975.  
  4976. even
  4977. BladeRunnersText:
  4978. dc.b `Blade Runners`,0
  4979.  
  4980. even
  4981. BLFText:
  4982. dc.b `BLF`,0
  4983.  
  4984. even
  4985. BlizzProV31Text:
  4986. dc.b `Blizz Pro V3.1`,0
  4987.  
  4988. even
  4989. BlizzProV33Text:
  4990. dc.b `Blizz Pro V3.3`,0
  4991.  
  4992. even
  4993. BlowJobText:
  4994. dc.b `BlowJob`,0
  4995.  
  4996. even
  4997. BlueboxText:
  4998. dc.b `BlueBox.icon.library`,0
  4999.  
  5000. even
  5001. BootXText:
  5002. dc.b `BootX`,0
  5003.  
  5004. even
  5005. BretHawnesText:
  5006. dc.b `Bret Hawnes`,0
  5007.  
  5008. even
  5009. ButonicText:
  5010. dc.b `Butonic 1.1`,0
  5011.  
  5012. even
  5013. ByteBanditText:
  5014. dc.b `Byte Bandit`,0
  5015.  
  5016. even
  5017. ByteBanditPlusText:
  5018. dc.b `Byte Bandit +`,0
  5019.  
  5020. even
  5021. ByteBandit2Text:
  5022. dc.b `Byte Bandit 2`,0
  5023.  
  5024. even
  5025. ByteBanditturboText:
  5026. dc.b `Byte Bandit turbo`,0
  5027.  
  5028. even
  5029. ByteVoyagerText:
  5030. dc.b `BYTE VOYAGER`,0
  5031.  
  5032. even
  5033. ByteVoyagerIIText:
  5034. dc.b `Byte Voyager II`,0
  5035.  
  5036. even
  5037. ByteWarriorText:
  5038. dc.b `Byte Warrior`,0
  5039.  
  5040. even
  5041. CascadeText:
  5042. dc.b `Cascade`,0
  5043.  
  5044. even
  5045. CCCPText:
  5046. dc.b `CCCP`,0
  5047.  
  5048. even
  5049. ClaasAbrahamText:
  5050. dc.b `Claas Abraham`,0
  5051.  
  5052. even
  5053. ClonkText:
  5054. dc.b `CLONK`,0
  5055.  
  5056. even
  5057. COBRAText:
  5058. dc.b `COBRA`,0
  5059.  
  5060. even
  5061. CodersNightmareText:
  5062. dc.b `Coders Nightmare`,0
  5063.  
  5064. even
  5065. CommodoreText:
  5066. dc.b `Commodore`,0
  5067.  
  5068. even
  5069. CopyLockText:
  5070. dc.b `CopyLock`,0
  5071.  
  5072. even
  5073. ColorText:
  5074. dc.b `Color (TURK V1.3)`,0
  5075.  
  5076. even
  5077. CompuPhagozyteText:
  5078. dc.b `CompuPhagozyte`,0
  5079.  
  5080. even
  5081. CompuPhagozyte2Text:
  5082. dc.b `CompuPhagozyte 2`,0
  5083.  
  5084. even
  5085. CompuPhagozyteIIText:
  5086. dc.b `COMPUPhagozyte II`,0
  5087.  
  5088. even
  5089. CompuPhagozyteIIIText:
  5090. dc.b `CompuPhagozyte III A`,0
  5091.  
  5092. even
  5093. CompuPhagozyteIIIBCText:
  5094. dc.b `CompuPhagozyte III B/C`,0
  5095.  
  5096. even
  5097. CompuPhagozyteIVText:
  5098. dc.b `CompuPhagozyte IV`,0
  5099.  
  5100. even
  5101. CrackerExterminatorText:
  5102. dc.b `Cracker Exterminator`,0
  5103.  
  5104. even
  5105. Crime2Text:
  5106. dc.b `Crime 2`,0
  5107.  
  5108. even
  5109. CrimePlusText:
  5110. dc.b `Crime!++`,0
  5111.  
  5112. even
  5113. DStructureText:
  5114. dc.b `D-Structure`,0
  5115.  
  5116. even
  5117. DAGText:
  5118. dc.b `DAG`,0
  5119.  
  5120. even
  5121. DAGCreatorText:
  5122. dc.b `DAG-Creator`,0
  5123.  
  5124. even
  5125. DarthVaderText:
  5126. dc.b `DARTH VADER 1.1`,0
  5127.  
  5128. even
  5129. DAT89Text:
  5130. dc.b `DAT '89`,0
  5131.  
  5132. even
  5133. DatacrimeText:
  5134. dc.b `Datacrime`,0
  5135.  
  5136. even
  5137. DestructorText:
  5138. dc.b `Destructor V1.2`,0
  5139.  
  5140. even
  5141. DetlefText:
  5142. dc.b `Detlef`,0
  5143.  
  5144. even
  5145. DigitalEmotionsText:
  5146. dc.b `DIGITAL EMOTIONS`,0
  5147.  
  5148. even
  5149. DisasterMasterText:
  5150. dc.b `DISASTER-MASTER V2`,0
  5151.  
  5152. even
  5153. DisgustText:
  5154. dc.b `Disgust`,0
  5155.  
  5156. even
  5157. DiskDoktorsText:
  5158. dc.b `Disk-Doktors`,0
  5159.  
  5160. even
  5161. DISKFurunkelText:
  5162. dc.b `DISK-Furunkel`,0
  5163.  
  5164. even
  5165. DiskguardText:
  5166. dc.b `DISK GUARD V1.0`,0
  5167.  
  5168. even
  5169. DiskHerpesText:
  5170. dc.b `Disk-Herpes`,0
  5171.  
  5172. even
  5173. DiskKillerText:
  5174. dc.b `DISK-KILLER V1.0`,0
  5175.  
  5176. even
  5177. DiskTerminatorText:
  5178. dc.b `Disk-Terminator`,0
  5179.  
  5180. even
  5181. DisktroyerV10Text:
  5182. dc.b `Disktroyer V1.0`,0
  5183.  
  5184. even
  5185. DisktroyerV20Text:
  5186. dc.b `Disktroyer V2.0`,0
  5187.  
  5188. even
  5189. DiskVal1234Text:
  5190. dc.b `Disk-Val1234`,0
  5191.  
  5192. even
  5193. DivinaExterminatorText:
  5194. dc.b `Divina Exterminator`,0
  5195.  
  5196. even
  5197. DMTrashText:
  5198. dc.b `DM-Trash`,0
  5199.  
  5200. even
  5201. DottyText:
  5202. dc.b `Dotty`,0
  5203.  
  5204. even
  5205. DriveInfoText:
  5206. dc.b `Drive Info(Crime!Linkvirus)`,0
  5207.  
  5208. even
  5209. DUMDUMText:
  5210. dc.b `DUMDUM`,0
  5211.  
  5212. even
  5213. ElectroVisionText:
  5214. dc.b `ELECTRO.VISION`,0
  5215.  
  5216. even
  5217. EuropeanText:
  5218. dc.b `European`,0
  5219.  
  5220. even
  5221. ExcrementText:
  5222. dc.b `EXCREMENT`,0
  5223.  
  5224. even
  5225. ExcrementCreatorText:
  5226. dc.b `EXCREMENT Creator`,0
  5227.  
  5228. even
  5229. ExecutorsText:
  5230. dc.b `EXECUTORS`,0
  5231.  
  5232. even
  5233. ExtremeText:
  5234. dc.b `EXTREME`,0
  5235.  
  5236. even
  5237. FASTText:
  5238. dc.b `F.A.S.T`,0
  5239.  
  5240. even
  5241. FastEddieText:
  5242. dc.b `Fast Eddie`,0
  5243.  
  5244. even
  5245. FICAText:
  5246. dc.b `FICA`,0
  5247.  
  5248. even
  5249. ForpibText:
  5250. dc.b `FORPIB`,0
  5251.  
  5252. even
  5253. FreedomText:
  5254. dc.b `Freedom!`,0
  5255.  
  5256. even
  5257. FrityText:
  5258. dc.b `Frity`,0
  5259.  
  5260. even
  5261. fuckdeviceText:
  5262. dc.b `fuck.device`,0
  5263.  
  5264. even
  5265. GadaffiText:
  5266. dc.b `GADAFFI`,0
  5267.  
  5268. even
  5269. GermanyText:
  5270. dc.b `Germany`,0
  5271.  
  5272. even
  5273. GlasnostText:
  5274. dc.b `GLASNOST`,0
  5275.  
  5276. even
  5277. GoldenRiderText:
  5278. dc.b `Golden Rider`,0
  5279.  
  5280. even
  5281. GotchaLamerText:
  5282. dc.b `Gotcha Lamer`,0
  5283.  
  5284. even
  5285. GotchaLamerCreatorText:
  5286. dc.b `Gotcha Lamer Creator`,0
  5287.  
  5288. even
  5289. GraffitiText:
  5290. dc.b `Graffiti`,0
  5291.  
  5292. even
  5293. GremlinText:
  5294. dc.b `Gremlin`,0
  5295.  
  5296. even
  5297. GuardiansBootAidsText:
  5298. dc.b `Guardians BootAids`,0
  5299.  
  5300. even
  5301. GXTeamText:
  5302. dc.b `GX.Team`,0
  5303.  
  5304. even
  5305. GyrosText:
  5306. dc.b `GYROS`,0
  5307.  
  5308. even
  5309. GZUSText:
  5310. dc.b `G-Zus`,0
  5311.  
  5312. even
  5313. HARDEXText:
  5314. dc.b `HARDEX`,0
  5315.  
  5316. even
  5317. HaukeText:
  5318. dc.b `Hauke`,0
  5319.  
  5320. even
  5321. HCSText:
  5322. dc.b `H.C.S`,0
  5323.  
  5324. even
  5325. HCSIIText:
  5326. dc.b `H.C.S II`,0
  5327.  
  5328. even
  5329. HighlanderText:
  5330. dc.b `HIGHLANDER`,0
  5331.  
  5332. even
  5333. HillyText:
  5334. dc.b `Hilly`,0
  5335.  
  5336. even
  5337. HochofenText:
  5338. dc.b `Hochofen`,0
  5339.  
  5340. even
  5341. HODENText:
  5342. dc.b `HODEN V33.17`,0
  5343.  
  5344. even
  5345. IceText:
  5346. dc.b `ICE`,0
  5347.  
  5348. even
  5349. IncognitoText:
  5350. dc.b `Incognito`,0
  5351.  
  5352. even
  5353. IndianaJonesText:
  5354. dc.b `Indiana Jones`,0
  5355.  
  5356. even
  5357. InfectorText:
  5358. dc.b `Infector`,0
  5359.  
  5360. even
  5361. InfluenzaText:
  5362. dc.b `INFLUENZA`,0
  5363.  
  5364. even
  5365. IngerIQText:
  5366. dc.b `Inger IQ`,0
  5367.  
  5368. even
  5369. IngoText:
  5370. dc.b `INGO`,0
  5371.  
  5372. even
  5373. IngosReturnText:
  5374. dc.b `INGOs Return`,0
  5375.  
  5376. even
  5377. IntelText:
  5378. dc.b `INTEL`,0
  5379.  
  5380. even
  5381. IRQText:
  5382. dc.b `IRQ`,0
  5383.  
  5384. even
  5385. JeffBUTONICV131Text:
  5386. dc.b `Jeff BUTONIC V1.31`,0
  5387.  
  5388. even
  5389. JeffBUTONICV300Text:
  5390. dc.b `Jeff BUTONIC V3.00`,0
  5391.  
  5392. even
  5393. JITRText:
  5394. dc.b `JITR`,0
  5395.  
  5396. even
  5397. JoshuaText:
  5398. dc.b `Joshua`,0
  5399.  
  5400. even
  5401. Joshua2Text:
  5402. dc.b `Joshua 2`,0
  5403.  
  5404. even
  5405. JulieText:
  5406. dc.b `Julie`,0
  5407.  
  5408. even
  5409. KaukiText:
  5410. dc.b `Kauki`,0
  5411.  
  5412. even
  5413. KefrensText:
  5414. dc.b `Kefrens`,0
  5415.  
  5416. even
  5417. KilledText:
  5418. dc.b `Killed`,0
  5419.  
  5420. even
  5421. LADSText:
  5422. dc.b `LADS`,0
  5423.  
  5424. even
  5425. LAMEText:
  5426. dc.b `LAME`,0
  5427.  
  5428. even
  5429. LameBlameText:
  5430. dc.b `Lame Blame!`,0
  5431.  
  5432. even
  5433. LamerExterminatoroldText:
  5434. dc.b `old LAMER Exterminator`,0
  5435.  
  5436. even
  5437. LamerExterminatoroldIIIText:
  5438. dc.b `(old) LAMER Exterminator (III)`,0
  5439.  
  5440. even
  5441. LamerExterminatornewText:
  5442. dc.b `new Lamer Exterminator`,0
  5443.  
  5444. even
  5445. LamerExterminatorIText:
  5446. dc.b `LAMER Exterminator I`,0
  5447.  
  5448. even
  5449. LamerExterminatorIIText:
  5450. dc.b `LAMER Exterminator II`,0
  5451.  
  5452. even
  5453. LamerExterminatorIIIText:
  5454. dc.b `LAMER Exterminator III`,0
  5455.  
  5456. even
  5457. LamerExterminatorIVText:
  5458. dc.b `LAMER Exterminator IV`,0
  5459.  
  5460. even
  5461. LamerExterminatorIVVText:
  5462. dc.b `LAMER Exterminator IV or V`,0
  5463.  
  5464. even
  5465. LamerExterminatorVText:
  5466. dc.b `LAMER Exterminator V`,0
  5467.  
  5468. even
  5469. LamerExterminatorVIText:
  5470. dc.b `LAMER Exterminator VI`,0
  5471.  
  5472. even
  5473. LamerExterminatorVIItext:
  5474. dc.b `LAMER Exterminator VII`,0
  5475.  
  5476. even
  5477. LamerExterminatorVIIIText:
  5478. dc.b `LAMER Exterminator VIII`,0
  5479.  
  5480. even
  5481. LamerLoadWBText:
  5482. dc.b `LAMER LoadWB`,0
  5483.  
  5484. even
  5485. LamerVirusXText:
  5486. dc.b `LAMER VirusX`,0
  5487.  
  5488. even
  5489. Liberatorv121Text:
  5490. dc.b `Liberator v1.21`,0
  5491.  
  5492. even
  5493. Liberatorv30Text:
  5494. dc.b `Liberator v3.0`,0
  5495.  
  5496. even
  5497. Liberatorv501Text:
  5498. dc.b `Liberator v5.01`,0
  5499.  
  5500. even
  5501. LOOMText:
  5502. dc.b `LOOM`,0
  5503.  
  5504. even
  5505. LoverboySexmachineText:
  5506. dc.b `Loverboy & Sexmachine`,0
  5507.  
  5508. even
  5509. LSDText:
  5510. dc.b `LSD`,0
  5511.  
  5512. even
  5513. MADText:
  5514. dc.b `MAD`,0
  5515.  
  5516. even
  5517. MADIIText:
  5518. dc.b `MAD II`,0
  5519.  
  5520. even
  5521. MallanderText:
  5522. dc.b `MALLANDER V1.0`,0
  5523.  
  5524. even
  5525. MENEMSREVENGEText:
  5526. dc.b `MENEMs REVENGE`,0
  5527.  
  5528. even
  5529. MEXXText:
  5530. dc.b `MEXX`,0
  5531.  
  5532. even
  5533. MGM89Text:
  5534. dc.b `MGM 89`,0
  5535.  
  5536. even
  5537. MICROSYSTEMSText:
  5538. dc.b `MICROSYSTEMS`,0
  5539.  
  5540. even
  5541. ModemCheckerText:
  5542. dc.b `MODEMCHECKER`,0
  5543.  
  5544. even
  5545. ModemCheckerLoadWBText:
  5546. dc.b `MODEMCHECKER LoadWB`,0
  5547.  
  5548. even
  5549. MOSHText:
  5550. dc.b `MOSH`,0
  5551.  
  5552. even
  5553. MOSH2Text:
  5554. dc.b `MOSH 2`,0
  5555.  
  5556. even
  5557. MutilatorText:
  5558. dc.b `Mutilator`,0
  5559.  
  5560. even
  5561. NANOoldText:
  5562. dc.b `old NANO`,0
  5563.  
  5564. even
  5565. NanonewText:
  5566. dc.b `Nano (new)`,0
  5567.  
  5568. even
  5569. NaSTText:
  5570. dc.b `NaST`,0
  5571.  
  5572. even
  5573. NastyNastyText:
  5574. dc.b `Nasty-nasty`,0
  5575.  
  5576. even
  5577. NoGuruV20Text:
  5578. dc.b `No Guru V2.0`,0
  5579.  
  5580. even
  5581. NorthStarText:
  5582. dc.b `NORTH STAR`,0
  5583.  
  5584. even
  5585. NorthStarIIText:
  5586. dc.b `NORTH STAR II`,0
  5587.  
  5588. even
  5589. ObeliskText:
  5590. dc.b `OBELISK`,0
  5591.  
  5592. even
  5593. Obelisk2Text:
  5594. dc.b `OBELISK 2`,0
  5595.  
  5596. even
  5597. OPAPAText:
  5598. dc.b `OPAPA`,0
  5599.  
  5600. even
  5601. OverkillText:
  5602. dc.b `Overkill`,0
  5603.  
  5604. even
  5605. PARATAXIText:
  5606. dc.b `PARATAX I`,0
  5607.  
  5608. even
  5609. PARATAXIIText:
  5610. dc.b `PARATAX II`,0
  5611.  
  5612. even
  5613. PARATAXIIIText:
  5614. dc.b `PARATAX III`,0
  5615.  
  5616. even
  5617. PayDayText:
  5618. dc.b `PayDay`,0
  5619.  
  5620. even
  5621. PentagonSlayerText:
  5622. dc.b `Pentagon-Slayer`,0
  5623.  
  5624. even
  5625. PentagonSlayer2Text:
  5626. dc.b `Pentagon-Slayer 2`,0
  5627.  
  5628. even
  5629. PentagonSlayer3Text:
  5630. dc.b `Pentagon-Slayer 3`,0
  5631.  
  5632. even
  5633. PlastiqueText:
  5634. dc.b `Plastique`,0
  5635.  
  5636. even
  5637. PPBombText:
  5638. dc.b `PP-Bomb`,0
  5639.  
  5640. even
  5641. QRDLText:
  5642. dc.b `QRDL 1.1`,0
  5643.  
  5644. even
  5645. RedOctoberText:
  5646. dc.b `Red October 1.7`,0
  5647.  
  5648. even
  5649. REPText:
  5650. dc.b `REP!`,0
  5651.  
  5652. even
  5653. ReturnoftheLamerExterminatorText:
  5654. dc.b `Return of the Lamer Exterminator`,0
  5655.  
  5656. even
  5657. RevengeBootloaderText:
  5658. dc.b `Revenge Bootloader`,0
  5659.  
  5660. even
  5661. RevengeOfTheLamerExterminatorText:
  5662. dc.b `Revenge Of The LAMER Exterminator`,0
  5663.  
  5664. even
  5665. RevengeOfTheLamerExterminator2Text:
  5666. dc.b `Revenge Of The LAMER Exterminator 2`,0
  5667.  
  5668. even
  5669. REVENGEText:
  5670. dc.b `REVENGE V1.2`,0
  5671.  
  5672. even
  5673. RISCText:
  5674. dc.b `RISC`,0
  5675.  
  5676. even
  5677. SachsenText:
  5678. dc.b `SACHSEN No.1`,0
  5679.  
  5680. even
  5681. SADDAMText:
  5682. dc.b `SADDAM`,0
  5683.  
  5684. even
  5685. SADDAMHUSSEINText:
  5686. dc.b `SADDAM HUSSEIN`,0
  5687.  
  5688. even
  5689. SaoPauloText:
  5690. dc.b `Sao Paulo`,0
  5691.  
  5692. even
  5693. SATANText:
  5694. dc.b `SATAN`,0
  5695.  
  5696. even
  5697. SCAText:
  5698. dc.b `SCA`,0
  5699.  
  5700. even
  5701. SCARFACEText:
  5702. dc.b `SCARFACE`,0
  5703.  
  5704. even
  5705. SendarionText:
  5706. dc.b `Sendarion #1`,0
  5707.  
  5708. even
  5709. SEPULTURAText:
  5710. dc.b `SEPULTURA`,0
  5711.  
  5712. even
  5713. SherlockText:
  5714. dc.b `Sherlock2.0`,0
  5715.  
  5716. even
  5717. ShitText:
  5718. dc.b `Shit`,0
  5719.  
  5720. even
  5721. ShowSysopText:
  5722. dc.b `ShowSysop`,0
  5723.  
  5724. even
  5725. SmilyCancerText:
  5726. dc.b `Smily Cancer`,0
  5727.  
  5728. even
  5729. SmilyCancerLoadWBText:
  5730. dc.b `Smily Cancer LoadWB`,0
  5731.  
  5732. even
  5733. SnoopDosText:
  5734. dc.b `SnoopDos 1.6`,0
  5735.  
  5736. even
  5737. SonjaText:
  5738. dc.b `Sonja`,0
  5739.  
  5740. even
  5741. SSText:
  5742. dc.b `SS`,0
  5743.  
  5744. even
  5745. SSIIText:
  5746. dc.b `SS II`,0
  5747.  
  5748. even
  5749. SuicideMachineText:
  5750. dc.b `Suicide Machine`,0
  5751.  
  5752. even
  5753. SuperboyText:
  5754. dc.b `Superboy`,0
  5755.  
  5756. even
  5757. SupplyTeamText:
  5758. dc.b `Supply Team`,0
  5759.  
  5760. even
  5761. SystemZV30Text:
  5762. dc.b `System Z V3.0`,0
  5763.  
  5764. even
  5765. systemZV40Text:
  5766. dc.b `System Z V4.0`,0
  5767.  
  5768. even
  5769. SystemZV50Text:
  5770. dc.b `System Z V5.0`,0
  5771.  
  5772. even
  5773. SystemZV51Text:
  5774. dc.b `System Z V5.1`,0
  5775.  
  5776. even
  5777. SystemZV53Text:
  5778. dc.b `System Z V5.3`,0
  5779.  
  5780. even
  5781. SystemZV54Text:
  5782. dc.b `System Z V5.4`,0
  5783.  
  5784. even
  5785. SystemZV61Text:
  5786. dc.b `System Z V6.1`,0
  5787.  
  5788. even
  5789. SystemZV64Text:
  5790. dc.b `System Z V6.4`,0
  5791.  
  5792. even
  5793. SystemZV65Text:
  5794. dc.b `System Z V6.5`,0
  5795.  
  5796. even
  5797. TargetText:
  5798. dc.b `TARGET`,0
  5799.  
  5800. even
  5801. TelecomText:
  5802. dc.b `Telecom`,0
  5803.  
  5804. even
  5805. TelStarText:
  5806. dc.b `TelStar`,0
  5807.  
  5808. even
  5809. TermigatorText:
  5810. dc.b `Termigator`,0
  5811.  
  5812. even
  5813. TerroristsText:
  5814. dc.b `Terrorists`,0
  5815.  
  5816. even
  5817. TFCRevengeText:
  5818. dc.b `T.F.C. Revenge`,0
  5819.  
  5820. even
  5821. TFCRevengeLoadWBText:
  5822. dc.b `T.F.C. Revenge LoadWB`,0
  5823.  
  5824. even
  5825. TimeBombText:
  5826. dc.b `TIME BOMB 1.0`,0
  5827.  
  5828. even
  5829. TimeBombV09Text:
  5830. dc.b `TIME BOMB V0.9`,0
  5831.  
  5832. even
  5833. TNKText:
  5834. dc.b `TNK!`,0
  5835.  
  5836. even
  5837. TomatesGentechnic10Text:
  5838. dc.b `TOMATES GENTECHNIC 1.0`,0
  5839.  
  5840. even
  5841. TomatesGentechnic20Text:
  5842. dc.b `TOMATES GENTECHNIC 2.0`,0
  5843.  
  5844. even
  5845. TravelingJackText:
  5846. dc.b `Traveling Jack`,0
  5847.  
  5848. even
  5849. TravelingJack2Text:
  5850. dc.b `Traveling Jack 2`,0
  5851.  
  5852. even
  5853. TravelingJackTextText:
  5854. dc.b `Traveling Jack-Text`,0
  5855.  
  5856. even
  5857. TURKText:
  5858. dc.b `TURK V1.3`,0
  5859.  
  5860. even
  5861. UltrafoxText:
  5862. dc.b `Ultrafox`,0
  5863.  
  5864. even
  5865. UKLamerStyleText:
  5866. dc.b `UK Lamer Style`,0
  5867.  
  5868. even
  5869. USSR492Text:
  5870. dc.b `USSR 492`,0
  5871.  
  5872. even
  5873. VCCofTNTText:
  5874. dc.b `VCC of TNT`,0
  5875.  
  5876. even
  5877. VIPHSText:
  5878. dc.b `VIPHS`,0
  5879.  
  5880. even
  5881. VirusConstructionSetText:
  5882. dc.b `Virus Construction Set`,0
  5883.  
  5884. even
  5885. VirusConstructionSetBootblockText:
  5886. dc.b `Virus Construction Set-Bootblock`,0
  5887.  
  5888. even
  5889. VirusSlayerText:
  5890. dc.b `Virus Slayer`,0
  5891.  
  5892. even
  5893. VirusV1Text:
  5894. dc.b `Virus V1`,0
  5895.  
  5896. even
  5897. WAFTText:
  5898. dc.b `WAFT`,0
  5899.  
  5900. even
  5901. WahnfriedText:
  5902. dc.b `WAHNFRIED`,0
  5903.  
  5904. even
  5905. WARHAWKText:
  5906. dc.b `WARHAWK`,0
  5907.  
  5908. even
  5909. WarsawAvengerText:
  5910. dc.b `Warsaw Avenger`,0
  5911.  
  5912. even
  5913. XenoText:
  5914. dc.b `Xeno`,0
  5915.  
  5916. even
  5917. xprzspeedV32Text:
  5918. dc.b `xprzspeed V3.2`,0
  5919.  
  5920. even
  5921. ZaccessV10Text:
  5922. dc.b `ZACCESS V1.0`,0
  5923.  
  5924. even
  5925. ZaccessV20Text:
  5926. dc.b `ZACCESS V2.0`,0
  5927.  
  5928. even
  5929. ZaccessV30Text:
  5930. dc.b `ZACCESS V3.0`,0
  5931.  
  5932. even
  5933. ZenkerText:
  5934. dc.b `ZENKER`,0
  5935.  
  5936. even
  5937. ZESTText:
  5938. dc.b `Z.E.S.T`,0
  5939.  
  5940. even
  5941. ZLXText:
  5942. dc.b `ZLX!`,0
  5943.  
  5944. even
  5945. ZombiText:
  5946. dc.b `Zombi I`,0
  5947.  
  5948.